つのフィールドを除いてゼロに構造体を初期化します。 加えて、私はつまり、私はそのような何かをしたくないん、私はそれを宣言するところ初期化が行われるようにしたい:には、以下の構造体を考慮
sampleStruct globalStruct = {0};
int someFunc()
{
//...
globalStruct.b = true;
//...
}
これを行う方法はありますか? 私はそのような何かをやって考えた:
sampleStruct globalStruct = {.b = true, 0};
はそれを他のすべてのフィールドは常にゼロであることを約束していますか?
注:アンダースコアで始まる名前は、すべての名前空間の実装用に予約されています。アプリケーションコードでそれらを使用しないでください! – Olaf
@Olaf先頭に1つのアンダースコアが付いたシンボルは、グローバルスコープ内にのみ予約されています(したがって、通常の構造体定義では使用できません)。二重(またはそれ以上)のアンダースコアのシンボル、またはアンダースコアと大文字の後のシンボルは、すべてのスコープで予約されています。 –
@ JoachimPileborg:私は分化したはずです。とにかく 'typedef'は一般的にファイルスコープです。だから、これはここに当てはまるでしょう。しかし、はい、OPは[mcve]を提供しないので、**はブロックスコープにある可能性があります**。 – Olaf