问题描述——一般宏定义
#define THIS_YEAR 2021
宏不一定会被编译器看到,也就是说THIS_YEAR不一定会被放入符号表,因此在debug的时候错误信息可能只提到2021而不提到THIS_YEAR,对于很长的.h来说就很难定位。
解决方法
用常量const / enum
const int ThisYear = 2021;
特殊情况和详情:见c++ | const | 类专属常量 | enum_tuuzkiii_Tuu的博客-CSDN博客
问题描述——宏定义的函数
#define GET_MAX(a, b) f((a) > (b) ? (a) : (b))
总之就是很烂啦,不要用宏写函数
解决方法:用template inline (见文章....还没写)