#define P(a,b,c,d,e,f,g.........)参数可以随便设,宏定义其实是一个预处理替换,只是你要将对应的参数执行正确的操作。在C++中宏定义一系列简单操作的话可以用inline函数来替换,编译器对inline函数的处理是把接受了参数的inline函数的函数体和目标代码进行替换,有点像宏但比宏安全。
例如:#define P(x,y) int array[x]; cout << array[y];
在main中书写P(3,2)则编译器便把P(3,2)替换为 int array[3]; cout << array[2];
也可以使用inline函数如:
inline void func(const int& x,const int& y){
int array[x];
cout << array[y];
}
但有时候使用宏定义却很危险如:
#define P(x,y) (x) > (y) ? (x):(y)
int a = 3;
int b;
对于这样的语句b = P(++a,3)最后b却等于5,这并不是你想要的结果,这个时候使用inline函数就可以解决宏定义的不安全问题如:
template<class T>
inline const T& func(const T& x,const T& y){
return x > y ? x : y;
}
这样b = (++a,3)最后的结果便是4。
温馨提示:答案为网友推荐,仅供参考