C语言宏定义实现可变参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言宏定义实现可变参数相关的知识,希望对你有一定的参考价值。
参考技术A __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的。GCC、VC2005开始支持。
#define CALCSUM(v, ...) sum(v, __VA_ARGS__)
int sum(int num_args, ...)
int val = 0;
va_list ap;
int i;
va_start(ap, num_args);
for (i = 0; i < num_args; i++)
val += va_arg(ap, int);
va_end(ap);
return val;
int main(void)
printf("10、20 和 30 的和 = %d\n", CALCSUM(3, 10, 20, 30));
printf("4、20、25 和 30 的和 = %d\n", CALCSUM(4, 4, 20, 25, 30));
return 0;
以上是关于C语言宏定义实现可变参数的主要内容,如果未能解决你的问题,请参考以下文章
C语言函数参数中的三个点(三点 “...”)是干什么用的?(可变参数)<stdarg.h>va_start 宏va_arg 宏va_end 宏
C语言函数参数中的三个点(三点 “...”)是干什么用的?(可变参数)<stdarg.h>va_start 宏va_arg 宏va_end 宏