摘自问答中的答案
其实我倒觉得#define 并不是人们想象的那么不好
用define出现问题的地方是比较少碰到的:
如果只是用define定义一些常量或一些函数的简写是非常有用的:
比如:
1:#define PI 3.1415926
2:#define out(t) return t;
3: #define until(x) while(!(x))
4:#define nextCDT(X) }else if(X){
象上面的一些东西用inline是很难做到的。
用define 一个很重要的地方是:
#define func(x) (x)*(x)
如果只是传一个常量或变量倒无所谓
一旦传递的是类似i++/i--之类的东西时就有问题了
对于这种情况我们最好用inline这就是inline的好处
如果是下面的情况:
#define func(x) ((x)+1)
或 #define Sin(x) sin(x) //在定义体中参数只出现了一次
我想用define 比用inline效率更高
既然define 存在就有她存在的理由 我们要善于利用
他们的优点而避开他们的缺点。
1、内联函数的决定权在于编译器,编译器对过大的内联函数不给于理会。
2、