例如,假設我們有一個工會聯盟是否可以在聲明中初始化?
typedef union {
unsigned long U32;
float f;
}U_U32_F;
當這個聯盟類型的變量聲明,是有辦法設置初始值?
U_U32_F u = 0xffffffff; // Does not work...is there a correct syntax for this?
例如,假設我們有一個工會聯盟是否可以在聲明中初始化?
typedef union {
unsigned long U32;
float f;
}U_U32_F;
當這個聯盟類型的變量聲明,是有辦法設置初始值?
U_U32_F u = 0xffffffff; // Does not work...is there a correct syntax for this?
使用的初始化列表:
U_U32_F u = { 0xffffffff };
您可以通過
U_U32_F u = { .f = 42.0 };
請注意,第二個示例是C99功能,並非所有編譯器都支持。 – 2010-01-27 20:04:20
設置其他成員比第一次嘗試U_U32_F u = {0xffffffff};
注意,每名成員組成的聯合初始化沒有按不適用於C99之前的編譯器,其中有一個令人沮喪的編號。例如,目前的Microsoft C編譯器不支持它。 (我隱約記得它甚至不支持第一個成員初始化,這可以追溯到K & R II,但我可能是錯誤的。)
微軟或多或少拋棄了C,並希望你使用C++(或者更好:C#);我對MinGW非常滿意,現在gcc-4.4已經出來了;在未來,如果你正在尋找一個免費的編譯器,Clang/LLVM可能是一個可行的替代方案。 – Christoph 2010-01-27 23:22:31
Microsoft C編譯器沒有(並且據我所知還沒有,也不會)符合任何特定的標準。 – 2016-02-10 09:24:44
什麼是u32?..... – 2010-01-27 17:33:48
@Prasoon我的歉意。我有u32 typdef'ed但在示例中沒有顯示。 – semaj 2010-01-27 18:44:08