您的位置:首页 > 其它

关于宏定义

2013-06-19 00:00 127 查看
1、宏定义要加括号的原因?
例如定义一个宏:

<!-- lang: cpp -->
#define div(x,y)  x*y

因为宏定义在预处理阶段是内容严格的替换,如果调用div(a+b,y),替换后就成了a+b*y;不是我们想要的结果(a+b)*y,所以宏的定义,特别是当做函数的宏定义,应该定义为

<!-- lang: cpp -->
#define div(x,y) (x)*(y)

2、宏定义中的# 、##

#作用是把后面的宏参数转化为字符串,如

<!-- lang: cpp -->
#define	 STR(s) #s
printf(STR(neo)); //输出为neo;

的作用表示自然连接

<!-- lang: cpp -->
#define	 STR(s,s1)  #s###s1
printf(STR(neo,hellow)); //输出为neohellow;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  宏定义