宏是危险的
宏可以充当函数使用,但又不是真正的函数。
宏展开体属于函数体出现时的定义,并不是函数真实调用时的定义。
#define CAL ((x)*(x)*(x))
---use--
int i;
......
int a=CAL(++i);//未定义或者说歧义
使用内联函数或者静态函数替换
inline int cal(int i){
return i*i*i;
}
宏可以充当函数使用,但又不是真正的函数。
宏展开体属于函数体出现时的定义,并不是函数真实调用时的定义。
#define CAL ((x)*(x)*(x))
---use--
int i;
......
int a=CAL(++i);//未定义或者说歧义
使用内联函数或者静态函数替换
inline int cal(int i){
return i*i*i;
}
本文标题:预处理面——宏是危险的(inline)
本文链接:https://www.haomeiwen.com/subject/ycbfpttx.html
网友评论