prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 2.22

枚举和预处理器的一组#define有什么区别?


区别很小。C 标准规定枚举具有整数类型,枚举常量是int类型,因此两者都可以与其他整数类型自由混合,而不会出错。(另一方面,如果不允许这种混合而不使用显式类型转换,则明智地使用枚举可以捕获某些编程错误。)

枚举的一些优点是:数值是自动分配的,调试器在检查枚举变量时可以显示符号值,并且它们遵循块作用域。(编译器也可能在不加区分地混合枚举时生成非致命警告,因为这样做仍然被认为是糟糕的风格,尽管它不是严格非法的。)一个缺点是程序员对这些非致命警告的控制很少;一些程序员也对无法控制枚举变量的大小感到不满。

参考:K&R2 第 2.3 节第 39 页,第 A4.2 节第 196 页
ISO 第 6.1.2.5 节,第 6.5.2 节,第 6.5.2.2 节,附录 F
H&S 第 5.5 节第 127-9 页,第 5.11.2 节第 153 页


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管