在网上查了下资料,发现基本上都是转载的,而且基本上都是int的例子,我想弄char*字符串居然没有例子,然后自己用了始终是第一个字符串被抛弃了。于是研究了一下原因,原来是默认第一个就是可变参数的形参量。如下面例子
#define _END "_end" //定义一个结束符的宏
//申明的变量
void InitComBox(CComboBox* pBox, LPCTSTR sParam,...)
{
pBox->AddString(sParam);//添加第一个
va_list ap;
va_start(ap,sParam);
LPCTSTR _str = va_arg(ap,LPCTSTR);
while(_str != _END)
{
pBox->AddString(_str);
_str = va_arg(ap,LPCTSTR);
}
va_end(ap);
pBox->SetCurSel(0);
}
//使用例子
InitComBox(&m_CombDebug,"关闭调试","简单调试","全面调试",_END);
另外一个简单例子
void std_vararg_func(const char *fmt, ... )
{
va_list ap;
va_start(ap, fmt);
printf("%dn", va_arg(ap, int));
printf("%fn", va_arg(ap, double));
printf("%sn", va_arg(ap, char*));
va_end(ap);
}
int main()
{
std_vararg_func("%d %f %sn", 4, 5.4, "hello world");
}
输出: 4 5.400000 hello world
纪录下来!

本文链接:https://it72.com:4443/3729.htm