C/C++ 变长参数 (自己定义类似printf的函数)

#include<windows.h>
/*
  va_list 参数列表指针,C语言默认函数又到左压栈。 
  va_arg 获取参数
  va_end 清空参数
  缺点不能动态知道参数类型 + 参数个数。
  printf函数依靠格式化字符串判断参数类型和个数 
   

*/ 
void MessageBoxPrintf(char* pszCaputre,char* Format,...)
{
    va_list vaList;//equal to Format + sizeof(FOrmat)
    char szBuff[100];
    memset(szBuff,0,sizeof(char)*100);
    va_start(vaList,Format);
    //vsPrintf 三个参数 buff,format,参数数组的指针,va_list类型的。这个函数
    // 多用于实现多个参数的自定义函数 
    _vsnprintf(szBuff,100,Format,vaList); 
    va_end(vaList);
    MessageBoxA(NULL,szBuff,pszCaputre,MB_OK);
}    
int main()
{
    MessageBoxPrintf("test","%d,%d",1,2);
    cout<<Sum(0,1,2,3,4);
    system("pause");
    return 0;
}        

 

你可能感兴趣的:(C/C++ 变长参数 (自己定义类似printf的函数))