3

私は宣言との結合を持っています:

union test_u
{
    int i;
    char *str;
};

コードを使用して、「秒」フィールドのデータで変数を初期化しようとしています:

union test_u test = {"Sample"};  // char *, not int

これをコンパイルしようとすると、次のエラーが表示されます。

file.c:72:11: 警告: 初期化により、キャストなしでポインターから整数が作成されます

上記と同じ方法で変数を初期化することは可能ですか? intコンパイラ (C89 の下) は、初期化でto を受け入れるべきではありませんchar *か?

4

2 に答える 2

5

C99 では、指定された初期化子を使用してこれが可能です。

union test_u test = { .str = "Sample" };
于 2012-06-06T22:27:04.610 に答える