1

構造体を宣言し、{} で囲まれた値を定義することは有効な C ですか?

struct name new_name[] {
    {"value1"},
    {"value2"},
    {"value3"},
}

どこ:

struct name {
    union {
        char *value1;
    } n_u;

    char *value2;
}
4

1 に答える 1

3

イニシャライザの前に等号がないため(および末尾のセミコロンも)、投稿したものは無効です。それ以外の場合、これは合法ですが、すべてのフィールドを初期化せず、中括弧の完全なセットを使用しないため、多少読みにくくなります。完全ブレース初期化子では、すべての配列、構造体、または共用体の値のリストを 1 組の中括弧で囲みます。この場合、共用体を含む構造体の配列があるため、最適な読みやすさのために 3 レベルの中括弧が必要です。スペルアウトされたすべてのものと同等のものは次のとおりです。

struct name new_name[] = {
    {{"value1"}, NULL},
    {{"value2"}, NULL},
    {{"value3"}, NULL},
};
于 2012-07-01T04:46:33.550 に答える