NoteDeep
关键字
inline
#
##
...

内联函数

inline int square(){} //优化函数,直接将函数在调用位置展开,增加了代码的编译时间
gcc test.c -O && ./app_test.out
//有时候编译器会自动优化成内联函数,所以不加也可以……

函数的可变参数

<stdarg.h>

<stdarg.h> va_list
<stdarg.h> va_start
<stdarg.h> va_arg
<stdarg.h> va_end

int sum(int n, ...);
int sum(int n, ...)//n:可变参数的个数
{
int i, sum = 0;
va_list vap;//定义参数列表
va_start(vap, n);//初始化参数列表
for (i = 0; i < n; i++)
{
sum += va_arg(vap, int);//获取参数
}
va_end(vap);//关闭参数列表
return sum;
}


#和##

预处理运算符
在带参数的宏定义中,#运算符后面应该跟一个参数,预处理器会把这个参数转换为一个字符串
#define STR(s) # s //s中的多个空格会被变成一个空格, 自动将字符变为转义字符
#@:字符化
#define A(x) #@x //为x加上单引号
##记号连接运算符
#define TOGETHER(x, y) x ## y

宏定义的可变参数

#define SHOWLIST(...) PRINTF(# __VA_ARGS__) //...表示可变参数,__VA_ARGS__在与处理中被实际的参数集所替换
#define PRINT(format, ...) printf(# format, ## __VA_ARGS__) //可变参数支持空参数












评论列表

    内联函数
    函数的可变参数
    #和##
    宏定义的可变参数