Cod*_*777 3 c++ winapi win64 variadic-functions visual-studio-2010
我正在使用VS2010 Pro编译器,当我在x64上构建时,我得到以下编译错误.在x86上完美编译.错误C2704:'':__va_start内部仅允许在varargs中
方法声明:
int foo(char* buf, int maxChar, const char*& fmt);
Run Code Online (Sandbox Code Playgroud)
定义:
int foo(char* buf, int maxChar, const char*& fmt)
{
int numChar = 0;
if (fmt)
{
va_list plist;
va_start(plist, fmt);
numChar = _vsnprintf(buf, maxChar, fmt, plist);
va_end(plist);
}
return numChar;
}
Run Code Online (Sandbox Code Playgroud)
这个错误是什么意思?如何解决这个问题?
我认为这几乎意味着它所说的.编译器不会允许您使用va_start,va_arg等等,除了在变量参数功能.va_start在vararg函数之外使用是没有意义的.
这没有定义变量参数函数:
int foo(char* buf, int maxChar, const char*& fmt)
Run Code Online (Sandbox Code Playgroud)
这样做:
int foo(char* buf, int maxChar, const char*& fmt, ...)
Run Code Online (Sandbox Code Playgroud)