【发布时间】:2013-07-26 18:19:13
【问题描述】:
为什么enum 的大小总是 2 或 4 字节(分别在 16 位或 32 位架构上),而不管类型中的枚举数是多少?
编译器是否像对待union 一样对待enum?
【问题讨论】:
-
@GrijeshChauhan:在 C 中是正确的,而不是在 C++ 中——在 C 中,枚举常量的大小可能与类型的大小不同。
-
如果创建 2,147,483,648 个枚举会发生什么?我敢打赌编译器会胡思乱想......
-
@Jim 同样是我的疑问,不想创建超过 100 秒的符号常数。如果他这样做,他可能是个糟糕的程序员。
-
@Jim 开玩笑,如果你假设典型的大写字母
enum标识符,并坚持统一长度,每个标识符必须是 7 个字符,加上一个逗号和空格,这意味着源文件本身大约为 20GB。我不希望很多编译器会特别乐意尝试通过它来咀嚼...... -
@LorenPechtel:
enum too_big { big = INT_MAX, bigger };