我在Windows(gcc版本4.8.1)上使用MinGW g++编译器,并对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不在声明中。引用是否错误,我是否错过了某件事或背后有故事?

最佳答案

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

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

在将其标准化为C99之前,Microsoft拥有自己的swprintf版本和其他原型(prototype)。这是一个非常老的C库,具有许多C99不兼容性,例如,我不认为其printf支持%zusize_t ...

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

关于c++ - swprintf声明不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35072373/

10-10 12:32