#define POCKETMONEY 10
#define POCKETMONEY 10 这里后面加上分号就不能运行是什么鬼?
#define POCKETMONEY 10 这里后面加上分号就不能运行是什么鬼?
2015-11-05
#define 本质上是字符的替换
比如
#define A 1 // ... int a = A; // 编译的时候编译器就做了替换,这里变成了 int a = 1;
如果你加了 分号,就变成了这种情况
#define A 1; // ... int a = A; // 替换后就成了 int a = 1;; 这当然是错的
所以说 #define 用的时候要注意,尤其是定义“函数”时,注意加括号,否则容易有歧义
所以C++中,建议使用 const 来定义全局的常量,使用 typedef 定义类型别名,使用函数定义函数(C++可以使用functional模板函数,以及auto类型推断,很方便。当然因为C++不断的加新的特性,变得复杂臃肿,也有很多人不喜欢C++,比如Linux大神Linus喜欢纯C)
举报