问我能初始化联合体吗?
答在最初的 ANSI C 中,初始化器只允许用于联合体中第一个命名的成员。C99 引入了“指定初始化器”,可以用于初始化任何成员。
在没有指定初始化器的情况下,如果你实在没办法,有时可以定义联合体的几个变体副本,但成员顺序不同,这样你就可以声明并初始化具有适当第一个成员的那个。(这些变体保证实现兼容,所以通过初始化其中一个然后使用另一个来进行“幽灵转换”是可以的。)
参考:K&R2 Sec. 6.8 pp. 148-9
ISO Sec. 6.5.7
C9X Sec. 6.5.8
H&S Sec. 4.6.7 p. 100