我在Windows上使用MinGW g ++编译器(gcc版本4.8.1),我对swprintf声明感到困惑
根据this reference,它应该是
int swprintf (wchar_t* ws, size_t len, const wchar_t* format, ...);
但是当我使用
时swprintf(my_ws, 32, L"hello");
我收到错误
initializing argument 2 of 'int swprintf(wchar_t*, const wchar_t*, ...)' [-fpermissive]
看起来size_t len
不在声明中。引用是错误的,我是否错过了某些内容或背后有什么故事?
答案 0 :(得分:4)
您使用的C库不符合C99标准。
MinGW是使用Microsoft C运行时库的gcc
端口。
微软拥有自己的swprintf
版本,在将其标准化为C99之前使用了不同的原型。这是一个非常古老的C库,具有很多C99不兼容性,例如我认为printf
%zu
支持size_t
{...}}
如果MinGW使用更新的运行时,则应升级到更新版本的MinGW。如果没有,您将不得不使用旧的原型,并使用这些过时的API。