我认为这是正确的主人:
#include <cstdio>
注
#include <stdio.h>
第1条将一切放在“星号”名称空间,第2版。 因此,我使用了第一个版本。
下面是我正在汇编的法典,使用g++4.4.6。
#include <cstdarg> //< va_list
#include <cstdio> //< vsnprintf()
#include "virtual_utils.h"
namespace VS
{
const char* format_str( const char* str, ... ) throw()
{
static char buf[10][1024];
static unsigned long buf_no = 0;
char* cur_buf = buf[ ++buf_no % 10 ];
buf_no %= 10;
va_list vl;
va_start( vl, str );
#ifdef _MSC_VER
std::_vsnprintf( cur_buf, sizeof(buf), str, vl );
#else
std::vsnprintf( cur_buf, sizeof(buf), str, vl );
#endif
return cur_buf;
}
} //< namespace VS
这些错误是我正在发现的:
virtual_utils.C: In function const char* VS::format_str(const char*, ...) :
virtual_utils.C:28: error: vsnprintf is not a member of std
Edit:
Modifying the above code to remove the #include "virtual_utils.h"
and to add a main()
, it compiles with a warning under gcc4.3.4 on Ideone and cleanly under gcc4.5.1.