标题:
C语言里面这种带括号的宏定义有什么作用
[打印本页]
作者:
阿常
时间:
2023-4-7 12:44
标题:
C语言里面这种带括号的宏定义有什么作用
#define C_PORTA (PORTA)
#define C_PORTB (PORTB)
#define C_PORTC (PORTC)
#define CST_KEY1_BIT (C_PORTB & C_KEY_BIT6) //定义按键地址
像这种,定义的时候最后的参数带括号是啥意思?看不太懂
下面是原贴。
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