2010-09-01 56 views

回答

22
  1. 枚举只是一个右值,而不是左值。它没有地址。
  2. 枚举只能是编译时间常量,而不是运行时常量。
  3. 枚举不会添加任何膨胀到对象文件。
  4. 枚举编译速度更快,在编译时使用更少的内存。通常它可以忽略不计,但是如果你正在做足够复杂的元编程,它可能会开始变得重要。

一般来说,对于编译时常量而不是运行时常量的东西来说,使用枚举并没有什么不利之处,它的优点是让你的意图完全清晰并且效率更高。

编辑:另一个用于枚举的用例可以解释为编译器是否应该在运行时或编译时计算函数。如果将函数的结果分配给immutable堆栈变量,则该函数将在运行时进行评估。如果在同一范围内使用enum,则结果将在编译时进行评估。

4

D中的IIRC enum A = B;与C中的#define A B差不多一样。它在任何使用它的表达式中总是作为一个字面值被嵌入。