定义
1.不带参数的宏定义
#define 宏名 字符串
宏定义不是C语句,不需要在行末加分号
- 如果在字符串中含有宏名,则不进行替换
- 如果字符串长行一行,可以在该行末尾用反斜杠 \ 续行
- #define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到此源文件结束
- 可以用 #undef 命令终止定义的作用域
- 宏定义用于预处理命令,只作字符替换,不分配内存空间
2.带参数的宏定义
#define 宏名(参数列表) 字符串
- 宏定义时参数要加括号
- 宏扩展必须使用括号来保护表达式中低优先级的操作符
- 对带参数的宏的展开,只是将语句中的宏名后面括号内的实参字符串代替#define 命令行中的形参
- 在宏定义时,宏名与带参数的括号之间不可以有空格
- 在带参数的宏定义中,形参不分配内存单元,因此不必做类型定义