宏常量:为了实现简单,会定义宏常量
优点:1.一改全改,2.降低出错率,3.可读性高,
缺点:在预处理阶段进行替换,不会进行类型检测,安全性低(如果写错因为在预处理阶段不会在文件定义宏处报错,而会在使用处报错);
建议:尽量使用const修饰的常量替换宏常量
宏函数:
优点:
1.不是函数,少了函数调用,提高程序运行效率,
2.少写代码:因为宏函数是多条语句的封装—注意:不能提高代码复用率,因为宏函数在预处理阶段就展开了
3.可以提高代码的可读性
缺点:
1.在预处理阶段被替换,不会进行类型检测,代码安全性低
2.在预处理阶段展开–>不能调试
3.每个使用部分都会展开---->造成代码膨胀
4.容易出错,每个部分需要加括号
5.宏函数可能会有副作用
eg:宏函数可能会有副作用
#define Max(a,b) ((a)>(b))?a:b;
int main()