规则:用宏定义表达式时,要使用完备的括号
宏替换是简单的代替,要避免替换后运算符的优先级响应本来的用意
#define multiply MULTIPLY(a,b) a*b
#define multiply MULTIPLY(a,b) (a*b)
#define multiply MULTIPLY(a,b) (a(*(b)
以上定义都存在隐患,正确应如下:
#define multiply MULTIPLY(a,b) ((a)*(b))
规则2:宏有多条表达式时应放在大括号中
更好的方法是多条语句写成do while(0)语句。
规则3:使用宏时不允许参数变化
规则4:不允许使用魔鬼数字 数字常量用宏或const 定义