2

以下代码为调用生成 Lint 警告 559“3 号参数的大小与格式不一致” wsprintf,谁能解释为什么?

WCHAR szFoo[] = L"test";
WCHAR szBar[MAX_PATH];
wsprintf(szBar, L"c:\\path\\%s\\path", szFoo);

有趣的是,如果我将格式类型更改%S为不再引发警告,但这当然会将 szFoo 重新解释为 LPSTR 而不是 LPWSTR,这也是错误的。

当然,我可以只用 Lint 评论警告,但我很想知道它为什么认为有问题。

4

2 回答 2

2

您的问题是 lint 不知道宽字符串对%s格式类型有效。

可能最简单的解决方法是在代码中添加以下内联代码,无论是在本地实现还是在头文件中:

//lint -printf_code("s", TCHAR*)
于 2011-04-19T16:25:44.190 回答
1

WCHAR*LPWSTR,为什么会出错?

我建议使用 %lS,即使未定义 Unicode,它也会解释为 LPWSTR

于 2011-04-18T14:48:37.143 回答