我有一个结构:
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:
,它可能会起作用。但是,我更喜欢匿名工会。有没有办法做到这一点?