Cプログラミング言語標準に従って構造体を初期化する方法 質問する

Cプログラミング言語標準に従って構造体を初期化する方法 質問する

構造体の要素を初期化し、宣言と初期化を分割したいです。次のようになります:

typedef struct MY_TYPE {
  bool flag;
  short int value;
  double stuff;
} MY_TYPE;

void function(void) {
  MY_TYPE a;
  ...
  a = { true, 15, 0.123 }
}

これは、C プログラミング言語標準 (C89、C90、C99、C11 など) に従ってローカル変数を宣言および初期化する方法ですかMY_TYPE? それとも、もっと良い方法、または少なくとも機能する方法はありますか?

更新:最終的には、必要に応じてすべてのサブ要素を設定する静的初期化要素が作成されました。

ベストアンサー1

C99 では、指定された初期化子を使用して構造体を初期化できます。

MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 };

その他のメンバーはゼロとして初期化されます:「省略されたフィールド メンバーは、静的ストレージ期間を持つオブジェクトと同じように暗黙的に初期化されます。」https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

おすすめ記事