私は構造体を持っています:
typedef struct _n
{
int type;
union {
char *s;
int i;
};
} n;
次のような複合リテラルを割り当てようとすると、
node n1 = {1, 0};
node n2 = {2, "test"};
gcc は次のような警告を表示します。
warning: initialization makes pointer from integer without a cast
warning: initialization from incompatible pointer type
あいまいな可能性のある型に値を代入するだけで、コンパイラが確信を持てないことは明らかです。ただし、より正確に指定しようとしても、次のようになります。
node n0 = {type: 1, i: 4};
私は得る:
error: unknown field ‘i’ specified in initializer
(union <union name>)
前に置くとうまくいくかもしれないと読んだことi:
があります。しかし、私は匿名の組合を持つことを好みます。それを行う方法はありますか?