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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?