第1个回答 2012-08-10
宏定义有很多问题,因为它是直接替换,经常带来和想法不符的现象,所有加个括号是个好习惯。
比如
#define SUM 3+5
int x = 10 * SUM; 问题就来了,结果是被替换成 x = 10 * 3 + 5; 和本意 x = 10 * (3+5) 不符。
#define SUM (3+5)
这样就好了。所以养成一个好的书写习惯,可以使你少范错误。
第2个回答 2012-08-10
貌似加不加括号是一样的。。。比如
uchar ISendByte(uchar sla,uchar c)
{
Start_I2c(); /*启动总线*/
SendByte(sla); /*发送器件地址*/
if(ack==0)return(0);
SendByte(c); /*发送数据*/
if(ack==0)return(0);
Stop_I2c(); /*结束总线*/
return(1);
}
你看哈=。=这里的话 return 后面也加了括号=。=
第3个回答 2012-08-10
加括号的目的是为了适应不同的使用场合。
这个宏定义的目的是用 DI_INPUT_NUM 替代数字 11 。
你说的函数。。。我不明白是怎么回事。
第4个回答 2012-08-10
为了更严谨的。。。宏如果用不好的话,可能会产生奇怪的结果!