加括号是为了处理表达式参数(即宏的参数可能是个算法表达式)时不出错,因为宏替换就是文本替换。
比如以下情况:
#define COM(A,B) (A)*(B)
那么COM(6+5,3)它会换成这样: (6+5)*(3)
显然这是和COM宏的意图一致的,但是如是去掉了定义中括号,即写成这样:
#define COM(A,B) A*B
那么COM(6+5,3)它就会换成这样: 6+5*3
这样显然就和宏的意图不符合了。
加括号是为了处理表达式参数(即宏的参数可能是个算法表达式)时不出错,因为宏替换就是文本替换。
比如以下情况:
#define COM(A,B) (A)*(B)
那么COM(6+5,3)它会换成这样: (6+5)*(3)
显然这是和COM宏的意图一致的,但是如是去掉了定义中括号,即写成这样:
#define COM(A,B) A*B
那么COM(6+5,3)它就会换成这样: 6+5*3
这样显然就和宏的意图不符合了。