C++传递不定参函数

定义不定参数函数,要用到下面这些宏:

  • va_start(ap, farg): 初始化一个va_list变量ap,farg是第一个形参
  • va_arg(ap, type): 获取(下)一个type类型的参数
  • va_end(ap): 结束使用ap

C++语言里编写不定参数函数的形式是这样的(需要一个提供类型的参数):

#include
using namespace std; 

int sum(int x,...)
{
	int sum2=0;
	va_list apList;
	va_start(apList, x);
	for(int i=0;i

定义不定参数函数,要用到下面这些宏:

  • va_start(ap, farg): 初始化一个va_list变量ap,farg是第一个形参
  • va_arg(ap, type): 获取(下)一个type类型的参数
  • va_copy(ap): 用于复制参数列表
  • va_end(ap): 结束使用ap
    这些宏定义一般在stdarg.h里。
typedef char * va_list;
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1)  )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v)  )
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t))  )
#define va_end(ap) ( ap = (va_list)0 )

注意: 上面这些宏定义会因不同的系统和不同的处理器架构而不同

你可能感兴趣的:(c/c++/vc)