C ++如何获取sizeof(enum)== sizeof(char)?

时间:2012-07-01 19:10:09

标签: c++ enums sizeof

我想知道如何。

我查看了this topic,我理解“类型的选择是实现定义的。”但我很想知道如何获得1而不是4。

2 个答案:

答案 0 :(得分:8)

C ++ 11引入了一种改变枚举的基础类型的方法。

enum foo : char { ... };
enum class foo : char { ... };

但是,在大多数情况下,使用默认int可能会更好。

答案 1 :(得分:1)

在GCC上,您还可以使用'packed'属性告诉编译器您更关心空间而不是字对齐/访问速度:

enum foo { ... } __attribute__((packed));

其他编译器也有类似的提示。

(这在尝试避免编译器或IDE尚不支持的任何C ++ 11功能时非常有用。)