Cの構造体を空またはゼロで初期化しますか?

ダニエル
struct states
{
    float v, x;
};

struct 
{
    struct coeffs c1;
    struct states s1;
} cands;


main()
{
   // A: 
   cands.s1 = (struct states){   };
   // B:
   cands.s1 = (struct states){ 0 };
}

MicrosoftコンパイラはA(syntax errorについて文句を言いますが、Bでは正常に動作します。GCCはAについて文句を言いませんでした。

AとBのどちらが正しいですか?
AとBは同じですか?

一部のプログラマーの男

参照初期化子このような構造と労働組合

構造体または共用体タイプのオブジェクトを初期化する場合、初期化子は、空でない、中括弧で囲まれた、メンバーの初期化子のコンマ区切りリストである必要があります。

【エンファシスマイン】

正しい選択肢はBです。

多くのコンパイラは通常、デフォルトで多くの非標準拡張機能を基本言語に追加します。このような拡張機能は移植性がないため、使用しないことをお勧めします。

GCCには、空の中括弧リストに対してそのような拡張機能があるようです。たとえば、-std=c11ビルド時にオプションを追加すると、GCCはより厳密になり、非標準の拡張機能は使用されなくなります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Cは構造体のパディングをゼロに初期化しますか?

分類Dev

constexpr構造体はゼロで初期化されますか?

分類Dev

ベクトルの構造体のメンバーはC ++でゼロで初期化されていますか?

分類Dev

Swift3で空のNSZone構造体を初期化します

分類Dev

構造体を値で別の関数に渡すと、構造体がゼロに初期化されます

分類Dev

順序付けられていないマップは、ゼロで初期化された構造体を作成しますか?

分類Dev

Cの構造体でint配列を初期化します

分類Dev

Cで構造体の配列を初期化しています

分類Dev

char配列を含むC ++構造体は、異常な方法でゼロに初期化されます

分類Dev

ゼロ-C ++で構造体を再初期化する

分類Dev

割り当てなしで構造体を初期化しますか?

分類Dev

golangはネストされた構造体の内部構造体オブジェクトを初期化します

分類Dev

C構造体で行列変数を初期化しています

分類Dev

1つのフィールドを除いて構造体をゼロに初期化します

分類Dev

n要素の配列で構造体を初期化します

分類Dev

C ++で構造体へのポインタを初期化します

分類Dev

配列からのデータで構造体を初期化します

分類Dev

構造体を初期化するためのより保守しやすい方法はありますか?

分類Dev

golangでC構造体を初期化するときに、構造体初期化子の値が少なすぎます

分類Dev

typedef構造体を初期化します

分類Dev

Elixirでは、マップ変数で構造体をどのように初期化しますか

分類Dev

他の構造体の最初の定義としてネストされた構造体はゼロオフセットを持ちますか?

分類Dev

指定された初期化子の範囲を使用して、Cの構造体配列のすべての構造体メンバーを初期化します

分類Dev

Objective-CはどのようにしてC構造体をプロパティとして初期化しますか?

分類Dev

C ++暗黙の構築、構造体の初期化はどのように機能しますか?

分類Dev

関数を介してC構造体を初期化します

分類Dev

C = {{'?'、 '?'、 '?'、 '?'を使用して構造体を初期化します }};

分類Dev

構造体の配列フィールドをゼロで初期化する方法

分類Dev

ネストされた構造体を初期化します

Related 関連記事

  1. 1

    Cは構造体のパディングをゼロに初期化しますか?

  2. 2

    constexpr構造体はゼロで初期化されますか?

  3. 3

    ベクトルの構造体のメンバーはC ++でゼロで初期化されていますか?

  4. 4

    Swift3で空のNSZone構造体を初期化します

  5. 5

    構造体を値で別の関数に渡すと、構造体がゼロに初期化されます

  6. 6

    順序付けられていないマップは、ゼロで初期化された構造体を作成しますか?

  7. 7

    Cの構造体でint配列を初期化します

  8. 8

    Cで構造体の配列を初期化しています

  9. 9

    char配列を含むC ++構造体は、異常な方法でゼロに初期化されます

  10. 10

    ゼロ-C ++で構造体を再初期化する

  11. 11

    割り当てなしで構造体を初期化しますか?

  12. 12

    golangはネストされた構造体の内部構造体オブジェクトを初期化します

  13. 13

    C構造体で行列変数を初期化しています

  14. 14

    1つのフィールドを除いて構造体をゼロに初期化します

  15. 15

    n要素の配列で構造体を初期化します

  16. 16

    C ++で構造体へのポインタを初期化します

  17. 17

    配列からのデータで構造体を初期化します

  18. 18

    構造体を初期化するためのより保守しやすい方法はありますか?

  19. 19

    golangでC構造体を初期化するときに、構造体初期化子の値が少なすぎます

  20. 20

    typedef構造体を初期化します

  21. 21

    Elixirでは、マップ変数で構造体をどのように初期化しますか

  22. 22

    他の構造体の最初の定義としてネストされた構造体はゼロオフセットを持ちますか?

  23. 23

    指定された初期化子の範囲を使用して、Cの構造体配列のすべての構造体メンバーを初期化します

  24. 24

    Objective-CはどのようにしてC構造体をプロパティとして初期化しますか?

  25. 25

    C ++暗黙の構築、構造体の初期化はどのように機能しますか?

  26. 26

    関数を介してC構造体を初期化します

  27. 27

    C = {{'?'、 '?'、 '?'、 '?'を使用して構造体を初期化します }};

  28. 28

    構造体の配列フィールドをゼロで初期化する方法

  29. 29

    ネストされた構造体を初期化します

ホットタグ

アーカイブ