#define 定义宏
宏常量
#define MAX 50
优点:提高可读性、提高可扩展性(批量修改)、提高安全性
还可以与case配合使用
注意:宏常量名建议全部大写,末尾不要加分号
{函数名、局部变量小写+下划线、全局变量首字母大写、指针变量p、数组arr、字符串str}
case MAX:
注意:typedef int num;用法和含义上的区别
预定义好的宏常量:
__func__ 获取函数名
__FILE__ 获取文件名
__LINE__ 获取当前行号
__DATE__ 获取当前日期
__TIME__ 获取当前时间
宏函数:
宏函数其实是带参数的宏
宏函数不是真正的函数,不检查参数的类型,没有传参,没有返回值,
只有替换后的运算结果
如何实现:
1、把代码中使用到宏函数的地方替换为宏函数后面的代码
2、宏函数代码中使用的参数替换为调用者提供的参数
宏的二义性:
由于宏的位置不同,参数不同导致宏由不同的功能,叫做宏的二义性
如何避免宏的二义性:
宏函数整体加小括号,每个参数都加小括号保护
注意:在使用宏函数时,不要提供带自变运算符的变量作为参数
注意:容易出选择题,直接问哪个有二义性,提供宏函数问宏函数的结果
注意;;宏函数可以用大括号保护代码,定义宏常量、宏函数时不能换行的
但是可以在一行的末尾用续航符\换行
#define SUM(a,b) ((a)*(b)\
*(a))