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语言中如何实现可变参函数

C语言可变参数

c语言如何封装一个带有可变参数的方法?

C语言函数参数中的三个点(三点 “...”)是干什么用的?(可变参数)<stdarg.h>va_start 宏va_arg 宏va_end 宏

C语言函数参数中的三个点(三点 “...”)是干什么用的?(可变参数)<stdarg.h>va_start 宏va_arg 宏va_end 宏

利用C可变参数和宏定义来实现自己的日志系统