c++ 解决变参问题的宏定义;

时间:2023-03-09 21:22:34
c++ <stdarg.h> 解决变参问题的宏定义;

在读程序的过程中遇到的va_list类型不认识,百度得到的。:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html (此例子写的更通透,让我知道了function中的第一个参数穿的其实是个地址就是)(来源:http://blog.csdn.net/ID314846818/article/details/51074283)

当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表

void foo(...);

void foo(parm_list,...);
#include <iostream>
#include <stdarg.h>
using namespace std;
int main()
{
int function(int,...);
cout<<function(,,)<<endl;
cout<<function(,,,,);
return ;
}
int function(int v,...){
int ReturnValue=;
int i=v;
va_list ap ;//定义va_list类型变量,指向参数的指针ap;
va_start(ap,v);//初始化这个变量,即指定这个变量所指向的有几个参数;
cout<<ap[]<<endl;//此时什么都输不出来;
while(i>)
{
ReturnValue+=va_arg(ap,int);//返回可变的参数。类型为int;
i--;
}
va_end(ap);//结束标志
return ReturnValue/v;//返回的是均值;
}