5
我有一個結構:是否有可能(合法)在複合文字中分配匿名聯合?
typedef struct _n
{
int type;
union {
char *s;
int i;
};
} n;
當我嘗試指派複合文字,如:
node n1 = {1, 0};
node n2 = {2, "test"};
海灣合作委員會給了我一些警告,如:
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
我看了,如果我i:
之前把(union <union name>)
那麼它可能工作。但是,我更喜歡有一個匿名的聯盟。有沒有辦法做到這一點?
第一次看到它讓我感到吃驚,但對於GCC來說,這實際上是合法的(雖然不贊成使用)指定的初始化語法。 – ephemient 2009-12-11 05:39:22
(我猜不推薦)初始化語法是通過閱讀某些內核模塊代碼得到的。'fops'結構通常是這樣寫的。我現在要切換到C99的方式。對於匿名工會來說太糟糕了,我不知道他們不是標準的,謝謝你幫我清理這些。 – Steve 2009-12-11 13:58:14