联盟可以在声明中初始化吗?
例如,假设我们有一个联盟
typedef union { unsigned long U32; float f; }U_U32_F;
当声明了这个union类型的变量时,有没有办法设置初始值?
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 };
试试U_U32_F u = {0xffffffff};
请注意,每个成员联合初始化在C99之前的编译器上不起作用,其中有一个令人沮丧的数字。 例如,当前的Microsoft C编译器不支持它。 (我隐约回想起它甚至不支持第一成员初始化,这可以追溯到K&R II,但我可能错了。)