構造体を宣言し、{} で囲まれた値を定義することは有効な C ですか?
struct name new_name[] {
{"value1"},
{"value2"},
{"value3"},
}
どこ:
struct name {
union {
char *value1;
} n_u;
char *value2;
}
イニシャライザの前に等号がないため(および末尾のセミコロンも)、投稿したものは無効です。それ以外の場合、これは合法ですが、すべてのフィールドを初期化せず、中括弧の完全なセットを使用しないため、多少読みにくくなります。完全ブレース初期化子では、すべての配列、構造体、または共用体の値のリストを 1 組の中括弧で囲みます。この場合、共用体を含む構造体の配列があるため、最適な読みやすさのために 3 レベルの中括弧が必要です。スペルアウトされたすべてのものと同等のものは次のとおりです。
struct name new_name[] = {
{{"value1"}, NULL},
{{"value2"}, NULL},
{{"value3"}, NULL},
};