如:
#include <stdio.h>
#include <stdarg.h>
void print_ints(int, num_of_args, ...)
{
int total = 0, i
va_list ap
va_start(ap, num_of_args)
while(num_of_arg--){
i = va_arg(ap, int)
printf("%d\n", i)
total += i
}
printf("Total is %d \n", total)
va_end(ap)
}
如果使用
print_int(3, 20, 35, 15)
来调用,则输出:
20
35
15
Total is 70
有关函数:
va_start(argptr, parm) 使用argptr对参数列表和第二个参数parm的名称进行初始化
va_arg(argptr, type) 返回参数表中的下一个参数,它必须包含所指定的type
va_end(argptr) 终止参数读取
宏定义数组无法动态增加长度
只能通过修改宏的方式,重新编译增加长度.
比如
#define N 100int a[N],b[N],c[N]
定义的a b c都是100个元素.
修改 #define N 1000
那就都是1000个元素了.
一样方式就可以#define my_Printf(fmt, ...) ex_printf(fmt, ##__VA_ARGS__)
也可以
#define my_Printf(fmt, args...) ex_printf(fmt, ##args)
手机打字,没管大小写,领会精神就好