1、宏的好处:
- 方便程序的修改
可通过两方面(改数据,和字符串长度过长的时候)
使用简单宏定义可用宏代替一个在程序中经常使用的常量,这样在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可,而且当常量比较长时,我们可以用较短的有意义的标识符来写程序,这样更方便一些
- 提高程序的运行效率
使用带参数的宏定义可完成函数调用的功能,又能减少系统开销,提高运行效率。
2.宏的缺点
- 不能调试,递归
- 宏的参数有副作用,不带括号可能会造成歧义
- 宏没有类型安全检查
2.宏和函数的区别
类型安全,调用,代码大,参数安全,调试递归,指针
-
宏预处理的时候只是做形式上的替换,
-
宏不能调试和递归,函数可以
-
参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。函数只在目标文件中存在一处,比较节省程序空间。
-
宏函数的每个参数要带括号,否则可能会出现错误
-
有指向函数的指针,但是无法用指针指向宏
用什么可以替换宏
- 常量:const ,枚举
- 函数:内联函数,可以直接展开
#和##的区别
#是为了将宏转化为字符串的
##是为了拼接宏的或者拼接字符串