文章目录
内联
用于解决程序中函数调用的效率问题
只要在函数的定义之前加上inline
关键字
原理和宏定义展开类似,直接将函数的定义在内联处进行展开
相比普通函数,少了"跳来跳去的过程",也省去了申请栈空间的过程
#和##
1.#和##都是预处理运算符
2.在带参数的宏定义中,#运算符后面应该跟一个参数,预处理器会把这个参数转换为一个字符串
利用这种方法可以过滤多余的空格和,
3.##运算符被称为记号连接运算符,比如可以使用##运算符连接两个参数
打印出来发现是字符串FISHC
打印出来 会发现得到的是250
重要! 可变参数宏定义
#define SHOWLIST(...) printf(#__VA_ARGS__)
其中…表示使用可变参数,__VA_ARGS__在预处理中被实际的参数集所替换。
注意!可变参数是允许空参数的
例子
#include<stdio.h>
#define SHOWLIST(...) printf(# __VA_ARGS__)
int main()
{
SHOWLIST(FishC,520,3.14\n);//将会替换为printf的形式,还能过滤多余的空格和,
return 0;
}