C++ 如何获取 sizeof(enum) == sizeof(char)
C++ How to get sizeof(enum) == sizeof(char)?
我想知道如何。
我看过这个主题,我理解"类型的选择是实现定义的",但我很好奇如何得到 1 而不是 4。
C++11引入了一种更改枚举底层类型的方法。
enum foo : char { ... };
enum class foo : char { ... };
不过,在大多数情况下,使用默认int
可能会更好。
在 GCC 上,您还可以使用 'packed' 属性告诉编译器您更关心空间而不是单词对齐/访问速度:
enum foo { ... } __attribute__((packed));
其他编译器也有类似的提示。
(在尝试避免编译器或 IDE 尚不支持的任何 C++11 功能时,这很有用。