首页 > 解决方案 > C 是否优化了枚举的大小?

问题描述

如果我创建一个enum这样的

enum test {
  a=0,
  b
};

类型变量是否enum test在内存中存储为 1 位,因为这是表示它所需的最小值?

标签: cgccenums

解决方案


根据语言规范,枚举的大小最多保证为整数的大小。记住这一点,编译器可以在分析源代码时自由选择实际大小。

话虽如此,您可以使用https://godbolt.org/来探索在不同 CPU 架构负载上运行的各种 C 编译器的 asm 输出。从那里,您可以计算出特定配置的实际大小。


推荐阅读