(1) 编译器处理方式不同
define宏是在预处理阶段展开。
C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:
(1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
const float DIAMETER = RADIUS * 2;
enum EM { SIZE1 = 100, SIZE2 = 200};
// 枚举常量 sizeof(EM) = 4;
原文地址:http://blog.csdn.net/wdkirchhoff/article/details/41918293