C进阶——宏定义
宏定义
#define是预处理器处理的单元实体之一
#define定义的宏可以出现在程序的任意位置
#define定义之后的代码都可以使用这个宏
宏定义宏常量
#define定义的宏常量可以直接使用
#define定义的宏常量本质为字面量(并不占用内存,与const 常量区别)
#define宏常量和const常量的区别
https://www.runoob.com/note/12963C++ 宏定义 #define 和常量 const 的区别
宏定义表达式
#define 表达式的使用类似函数调用
#define 表达式可以比函数更强大
#define 表达式比函数更容易出错
https://blog.****.net/zhemingbuhao/article/details/88999657C语言 -- 宏定义中使用语句表达式和预处理器运算符
https://www.cnblogs.com/muzinian/archive/2012/11/25/2787929.html
!!!宏表达式被预处理器处理,编译器不知道宏表达式的存在
!!!宏表达式用“实参”完全替代形参,不进行任何运算
!!!宏表达式没有任何的“调用”开销
!!!宏表达式中不能出现地柜定义
宏定义打常量或表达式是否有作用域限制
常见的内置宏
小结
预处理器直接对宏进行文本替换
宏使用时的参数不会进行求值和运算
预处理器不会对宏定义进行语法检查
宏定义时出现的语法错误只能被编译器检测
宏定义的效率高于函数调用
宏的使用会带来一定的副作用