<分区>
Possible Duplicate:
Why use enum when #define is just as efficient?
在使用 C 语言编程时,对于状态机中的状态使用#define 语句还是枚举更好?
标签 c
<分区>
Possible Duplicate:
Why use enum when #define is just as efficient?
在使用 C 语言编程时,对于状态机中的状态使用#define 语句还是枚举更好?
最佳答案
从技术上讲,这并不重要。编译器很可能甚至会为这两种情况创建相同的机器代码,但枚举具有三个优点:
使用正确的编译器+调试器组合,调试器将按枚举名称而不是编号打印枚举变量。所以“StateBlahBlup”读起来比“41”好得多,不是吗?
您不必明确地为每个状态指定一个编号,如果您愿意,编译器会为您编号。假设您已经有 20 个状态并且您想在中间添加一个新状态,如果定义,您必须自己进行所有重新编号。在枚举的情况下,您只需添加状态,编译器将为您重新编号此新状态下的所有状态。
如果 switch 语句没有处理所有可能的枚举值,您可以告诉编译器警告您,例如因为您忘记处理某些值,或者因为枚举已扩展但您也忘记更新处理枚举值的 switch 语句(但是,如果存在 default
情况,它不会发出警告,因为所有值都未明确处理以默认情况结束)。
关于c - #define 还是枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134757/