宏定义
为一段代码定义一个标识, 在编译之前将使用宏名的地方替换为宏值,这个替换的过程叫宏替换也叫宏代换
#define 宏名 宏值
#define typeLength 10
#define Max(a,b) a > b ? a : b
注意:
- 宏值可以是任意 C 代码,在定义宏的时候,并不会检查语法,只有在宏替换的时候才检查语法
- 宏值如果是表达式,最好用括号括起来,因为在宏替换的时候可能会出现运算符优先级的问题
- 宏值里如果使用了变量名,一定在使用的时候,保证该变量已定义
- 宏名不是变量, 不能通过赋值符号去改变值
- 宏可以定在任意的地方(方法内和方法外),如果定义在方法内,出了大括号也可以使用,因为它不是变量。 宏从定义开始到文件结束,都是可以使用。可以使用
#undef typeLength
来使宏失效 - 不要和 typedef 搞混哈~ 给类型起别名和预处理指令的宏定义没关系哈~
- 带参数的宏,不需要写形参的类型
- 宏值里面有换行的话, 就代表这个宏的定义结束了