标题: C语言里面这种带括号的宏定义有什么作用 [打印本页]

作者: 阿常    时间: 2023-4-7 12:44
标题: C语言里面这种带括号的宏定义有什么作用


像这种,定义的时候最后的参数带括号是啥意思?看不太懂
下面是原贴。
http://www.51hei.com/bbs/dpj-226114-1.html




作者: zhuls    时间: 2023-4-7 16:55
#define 即 1(源 )映射到 2(目标)上 即在“PORTA”出现的在方用“C_PORTA"代替。至于参数带括号,应无差别,至少Keil C51是这样的
作者: Hephaestus    时间: 2023-4-7 20:12
用括号包起来是防止展开后发生歧义的,括号还是很简单的,你还没见过用do {} while(0)把几条语句包起来防止展开后发生歧义的。
作者: li64331218    时间: 2023-4-7 20:43
没啥区别,编译结果一样的。可能是个人习惯吧
作者: 18680365301    时间: 2023-4-8 09:39
#define CALC(X)  X + 3
   VALUE = (CALC(1) * 3)
   展开 VALUE = 1 + 3 * 3      结果VALUE为10

#define CALC(X) (X + 3)
   VALUE = (CALC(1) * 3)
   展开 VALUE = ((1 + 3) * 3)    结果VALUE为12
作者: xxxevery    时间: 2023-4-8 20:18
define后面的表达式用括号括上是正确且严谨的写法,三楼说的是对的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1