1. ホーム
  2. c

[解決済み] C言語の構造体メンバのデフォルト値

2022-03-11 01:49:37

質問

構造体のメンバにデフォルト値を設定することは可能ですか? 以下のような方法を試してみましたが、構文エラーになってしまいます。

typedef struct
{
  int flag = 3;
} MyStruct;

エラーです。

$ gcc -o testIt test.c 
test.c:7: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
test.c: In function ‘main’:
test.c:17: error: ‘struct <anonymous>’ has no member named ‘flag’

解決方法は?

構造は データ型 . データ型に値を与えるのではありません。データ型のインスタンス/オブジェクトに値を与えるのです。
だから、C言語ではありえない。

その代わりに、構造体インスタンスの初期化を行う関数を書けばよいのです。

あるいは、こうすることもできます。

struct MyStruct_s 
{
    int id;
} MyStruct_default = {3};

typedef struct MyStruct_s MyStruct;

そして、新しいインスタンスを常に次のように初期化します。

MyStruct mInstance = MyStruct_default;