就算宏定义在复杂,它也只是做替换!
不带参数的宏定义
- 宏的名字通常全部由大写字母组成,无需在末尾加分号
- 宏定义的替换是在编译之前的。
- 作用域:从定义的位置开始到整个程序结束,可以用#undef来终止宏定义的作用域
- 宏定义允许嵌套
带参数的宏定义
宏定义的时候需要注意格式,中间不能有空格,注意括号的使用!!
- #和##是两个预处理运算符。
- 在这之后,#运算符后面应该跟一个参数,预处理器会把整个参数转换为一个字符串
- ##运算符被称为记号连接运算符,比如我们可以使用##运算符连接两个参数。
内联函数(自动)
解决程序中函数调用的效率问题
- 关键字:inline
是对代码的一种优化操作。
内联函数虽然节省了函数调用的时间消耗,但由于每一个函数出现的地方都要替换(不一定都能替换),所以会消耗较大时间。