这个问题已经有了答案:
“static const” vs “#define” vs “enum”
17个答案
所以枚举的工作方式如下:
enum {
false,
true
}
相当于
int false = 0
int true = 1
为什么我不能用
enum
代替#define
?#define FALSE 0
#define TRUE 1
对我来说,它们似乎是可以互换的。我知道
#define
能够处理参数,因此操作方式与enum
完全不同。在这种情况下,enum
的主要用途究竟是什么?如果我猜,
#define
是一个预处理器特性,#define
将具有一些运行时优势。我离这儿有多远?提前谢谢。
最佳答案
当您有一长串要映射为数字的东西,并且希望能够在列表的中间插入一些东西时,enum的优势就会显现出来。例如,您有:
梨0
苹果1
橙子2
葡萄3
桃子4
杏5
现在你想把橘子放在橘子后面。根据定义,你必须重新定义葡萄、桃子和杏子的数量。使用enum,它将自动发生。是的,这是一个人为的例子,但希望它能给你这个想法。
关于c - 当#define同样有效时,为什么要使用enum? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5243269/