宏定义
#define N 10
- 宏:就是简的文件替换
宏函数
#define fun(x) (1+(x)+(x)*(x))
#define fun() do { printf("hello "); printf("world\n"); } while(0)
// 宏函数有时不仅仅是一个表达式,还可以是多条语句
// fun与左括号不应该有空格
// 整个函数体应该用括号括起来
// 函数参数x应该用括号括起来
// 警惕宏函数导致的多次作用
// 宏函数有点麻烦,但是效率高,普通函数调用有额外开销
宏与typedef
- 宏定义在预处理阶段进行,编译器无法识别宏定义,无法给出错误提示
- 编译器能识别typedef定义的别名,若发生错误,可给出提示