#define 定义宏
宏的声明方式:#define name( parament-list ) stuff
注意:参数列表的左括号必须与name紧邻。如果两者之间有任何空白存在,参数列表就会被解释为stuff的一部分。
eg: #define SQUARE(x) x*x
这个宏接收1个参数之后
SQUARE(3);
就会在预处理中替换为
3 * 3
但是这个宏存在一个问题
当这个参数为 a+1时
这个宏就会替换成a+1 * a+1
就会出现错误
所以这个宏应该写成
#define SQUARE(x) ((x)*(x))
宏和函数的对比
总结成了一个表