swprintf声明不匹配

时间:2016-01-28 21:27:08

标签: c++ c mingw

我在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不在声明中。引用是错误的,我是否错过了某些内容或背后有什么故事?

1 个答案:

答案 0 :(得分:4)

您使用的C库不符合C99标准。

MinGW是使用Microsoft C运行时库的gcc端口。

微软拥有自己的swprintf版本,在将其标准化为C99之前使用了不同的原型。这是一个非常古老的C库,具有很多C99不兼容性,例如我认为printf %zu支持size_t {...}}

如果MinGW使用更新的运行时,则应升级到更新版本的MinGW。如果没有,您将不得不使用旧的原型,并使用这些过时的API。