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
vs #define
问题没有一个问题表明,对于简单表达式,枚举比#define
更快,如果编译器优化是禁用。
答案 0 :(得分:2)
C中的枚举不像#defines那样工作。枚举是语言的一部分,预处理器不处理,因此STATE_2
将被评估为4。