C语言宏定义实现可变参数

__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语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,734评论 0 2
  • 题目来源:1、中兴、华为、慧通、英华达、微软亚洲技术中心等中外企业面试题目;2、C 语言面试宝典(林锐《高质量编程...
    月震阅读 5,824评论 0 1
  • 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf() 这个函数,它的定义是这样的: int pri...
    Mr_Me阅读 4,088评论 0 2
  • 摘要:通过stdarg.h头文件为函数提供了定义可变参数列表的能力。声明一个可变参数的函数类似: void f1(...
    乱蓬头199302阅读 3,237评论 0 0
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 7,593评论 0 3