预处理面——宏是危险的(inline)

宏是危险的

宏可以充当函数使用,但又不是真正的函数。
宏展开体属于函数体出现时的定义,并不是函数真实调用时的定义。

#define CAL ((x)*(x)*(x))


---use--
int i;
......
int a=CAL(++i);//未定义或者说歧义

使用内联函数或者静态函数替换

inline int  cal(int i){
  return i*i*i;
}

你可能感兴趣的:(预处理面——宏是危险的(inline))