C语言小记 —— 宏定义与可变参数列表
1、## 和 # 在宏定义中的作用
在宏定义中 ## 用于将两个参数连接起来, # 用于将参数字符串,可参见如下所示的代码:
#include <stdio.h>
#define CONN(parm1, parm2) (parm1##parm2)
#define CONNSTR(parm1, parm2) (parm1 parm2)
/* 注意使用 ## 连接两个字符串时会出错,在宏定义连接两个字符串的时候,直接使用空格就好了 */
#define TOSTR(parm) (#parm)
int main()
{
printf("Connect two integers: %d\n", CONN(10, 20));
printf("Connect two strings: %s\n", CONNSTR("10", "10"));
printf("Convert to String: %s\n", TOSTR(123));
return 0;
}
运行上面所示的代码,结果如下图所示:
2、函数中的可变参数列表
在编程的时候经常遇到的另一个问题是函数的参数个数不固定,下面就介绍一下在C语言中如何处理可变参数列表的。
借助一个工具: va_list;