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

C++ How to get sizeof(enum) == sizeof(char)?

本文关键字:sizeof char enum 获取 何获取 C++      更新时间:2023-10-16

我想知道如何。

看过这个主题,我理解"类型的选择是实现定义的",但我很好奇如何得到 1 而不是 4。

C++11引入了一种更改枚举底层类型的方法。

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

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

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

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

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

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