因为你没有具体说是什么样的宏定义实例,所以只能泛泛的说一下
加括号有很多种情况
1. 是本身如果是宏定义为函数效果,本身就需要用括号来隔开(包裹参数),比如
#defined Xadd(AB) (A+B)
2. 是为了保证宏展开时没有歧义,比如
#defined XX1(AB) (A * B)
#defined XX2(AB) ((A)*(B))
因为宏定义是硬展开,如果没有合适的括号,就会用歧义产生,比如调用
xx1 = XX1( 5+48+3 ) ;
xx2 = XX2( 5+48+3 ) ;
展开为(注意宏定义是预处理期间处理的,其实就是字符串操作)
xx1 =( 5+4 * 8+3 );
xx2=( (5+4) * (8+3) );
显然,xx2的展开情况才符合期望。