C 语言基础-#define
#define是以"#"号开头的预处理指令,它是定义标识符,称呼有很多如:宏定义、宏替换、宏展开。
- 在预编译阶段起作用
- 单纯进行文本替换,没有类型,不做类型检查,也不能进行调试
- 只是代码的展开操作,不分配内存,占的是test段(代码段)空间
- 宏调用时,需要程序设计者自行确保宏调用参数的类型正确。
- 过多的使用宏定义,会增加代码长度,会使二进制文件变大,会增加编译时间
- 宏定义允许嵌套宏定义
主要功能:
- 可以用来定义常量
- 可以用来定义表达式,拆行用 \
- 可以用来定义函数代码块,拆行用 \
主要分为:
- 有参宏定义:有参宏的宏名后带参数。
- 无参宏定义:无参宏的宏名后不带参数。
使用时注意:
- 预处理指令:不是说明或语句,所以宏定义时,在行末不必加分号,如果加上分号则预编译时会连分号也一起置换
- 必须宏定义在函数之外,其作用域为宏定义命令起到源程序结束。
- 一般建议宏名用大写字母表示,以便于与变量区别,就看个人喜好啦。
无参宏定义
无参宏的宏名后不带参数。
- 定义格式:#define 标识符 XXX,XXX 可以