可变函数(结)

1.建一个对话框工程,写一个Log函数,且看实例

void C可变函数Dlg::Log(LPCTSTR FormatString, ...)
{
	CString str(_T(""));

	va_list args;							//初始化参数,FormatString为参数的前一个参数
	va_start(args, FormatString);			/*然后应该对ap 进行初始化,让它指向可变参数表里面的第一个参数
											,这是通过 va_start 来实现的,第一个参数是 ap 本身
											,第二个参数是在变参表前面紧挨着的一个变量,即“...”之前的那个参数;*/

	//第一种方法:直接使用args
	str.FormatV(_T("%s, %d, %s, %d"), args);

	//第二种方法:使用va_arg逐个获取参数
	LPCTSTR parm1 = va_arg(args, LPCTSTR);
	int parm2 = va_arg(args, int);
	LPCTSTR parm3 = va_arg(args, LPCTSTR);
	int parm4 = va_arg(args, int);

	va_end(args);							//注意不要忘记调用。
}
2函数的调用
void C可变函数Dlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	//OnOK();

	CString str(_T("%s,%d,%s, %d"));
	Log(str, _T("11"), 22, _T("33"), 44);
}


你可能感兴趣的:(va_list,可变函数,va_star)