枚举在C替换中是否类似于#define
?
例如,如果我有一个标志列表,比如:
enum{
STATE_0 = 0x1<<0,
STATE_1 = 0x1<<1,
STATE_2 = 0x1<<2,
STATE_3 = 0x1<<3,
.
.
.
}
编译代码时,值将具有语句的计算结果,或使用
#define
这样的精确语句。例如,状态2将被评估为
4
或0x1<<2
?注:混淆的原因是,如果编译器优化被禁用,我所看到的
enum
vs#define
问题状态的答案中没有一个是枚举比#define
更快的。 最佳答案
C中的枚举的工作方式与定义不同。枚举是语言的一部分,预处理器不处理它,因此STATE_2
将被计算为4。