区别
- #define宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值。
- 一般在编译器里,可以调试枚举常量,但是不能调试宏常量。
- 枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个。
- 枚举可以自增1,这样不用每一个值都定义,而宏必须每个值都定义。
- 枚举是一个集合,代表一类值,像你代码中的颜色归为一类,方便使用,而宏不能形成集合。
例子
#include "stdafx.h"
enum COLOR
{
RED,
ORANGE,
YELLOW,
GREEN = 10,
CYAN,
BLUE,
PURPLE,
};
int _tmain(int argc, _TCHAR* argv[])
{
printf("RED = %d\r\n", RED);
printf("ORANGE = %d\r\n", ORANGE);
printf("YELLOW = %d\r\n", YELLOW);
printf("GREEN = %d\r\n", GREEN);
printf("CYAN = %d\r\n", CYAN);
printf("BLUE = %d\r\n", BLUE);
printf("PURPLE = %d\r\n", PURPLE);
printf("sizeof(COLOR) = %d", sizeof(COLOR));
getchar();
return 0;
}