prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 2.20

我能初始化联合体吗?


在最初的 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


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管