您当前的位置: 首页 >  c++

龚建波

暂无认证

  • 3浏览

    0关注

    312博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C/C++ 中那些可变长参数

龚建波 发布时间:2019-10-31 11:25:34 ,浏览量:3

C/C++提供了一些处理可变长参数/扩展参数包的宏、函数、模板,本文主要是记录下他们的使用方式

1. 使用中的宏

stdarg.h 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。可变参数的函数通在参数列表的末尾是使用省略号(,...)定义的。很多C语言库都是使用这种方式来处理输入参数列表的。

下面直接通过代码来演示如何使用,代码功能为统计N个参数的累加和:

#include 
#include 
int stdarg_counter(int count, ...)
{
	int sum = 0;
	//这是一个适用于 va_start()、va_arg() 和 va_end() 这三个宏存储信息的类型
	std::va_list args;
	//这个宏初始化args变量,它与 va_arg 和 va_end 宏是一起使用的。
	//第二个参数count是最后一个传递给函数的已知的固定参数,即省略号之前的参数。
	va_start(args, count);
	for (int i = 0; i < count; ++i) {
		//这个宏检索函数参数列表中类型为 type 的下一个参数
		sum += va_arg(args, int);
	}
	//这个宏允许使用了 va_start 宏的带有可变参数的函数返回。
	//如果在从函数返回之前没有调用 va_end,则结果为未定义。
	va_end(args);
	return sum;
}

int main()
{
	std::cout             
关注
打赏
1655829268
查看更多评论
0.4579s