这个问题已经有了答案:
“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/

10-17 00:52