【发布时间】:2012-08-10 08:08:26
【问题描述】:
如果我创建了一个 const union 对象(例如在下面的代码中),则不能在其中进行任何成员分配。那么在任何情况下,制作一个 const union 对象有什么用处?
union un
{
int i;
float f;
char c;
};
const union un a;
/// ! a.i = 10; error.
【问题讨论】:
-
在
c中,通过与最近设置的成员不同的成员来解释联合的情况并不少见。当然,它可能是const volatile- 即我们不会更改它,但其他人可能会,我们需要能够看到它。 -
如果整个该死的联合是
const,则不会。 -
@Xeo,当我使用 gcc 进行测试时,如果没有“union”部分,它将无法编译。
-
@AmigableClarkKant:是的,我以为这个问题一开始只是标记为 C++,但它也是 C,所以
union“详细类型说明符”使它可移植。我回滚了我的回滚。 :P