Enum 在 C 中是否被替换为 #define
?
例如,如果我有一个标志列表,例如:
enum{
STATE_0 = 0x1<<0,
STATE_1 = 0x1<<1,
STATE_2 = 0x1<<2,
STATE_3 = 0x1<<3,
.
.
.
}
当编译代码时,值将具有语句或精确语句的评估结果,如使用 #define
.
例如,STATE_2 将被评估为 4
或 0x1<<2
?
PS:混淆的原因是我没有看到关于 enum
的答案。对比#define
问题指出对于简单表达式枚举比 #define
更快,如果编译器优化被禁用。
最佳答案
C 中的枚举不像#defines 那样工作。枚举是语言的一部分,不会被预处理器处理,因此 STATE_2
将被评估为 4。
关于编译的枚举常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25118405/