Lint警告559的问题
Problem with Lint warning 559
下面的代码产生Lint警告559 "参数的大小no. "3与格式不一致"对于wsprintf
呼叫,有人能解释一下原因吗?
WCHAR szFoo[] = L"test";
WCHAR szBar[MAX_PATH];
wsprintf(szBar, L"c:\path\%s\path", szFoo);
有趣的是,如果我将格式类型更改为%S
,则不再提出警告,但这当然会将szFoo重新解释为LPSTR而不是LPWSTR,这也是错误的。
当然我可以直接用lint注释把警告去掉,但是我很想知道为什么它认为有问题
您的问题是lint不知道宽字符串对%s
格式类型有效。
//lint -printf_code("s", TCHAR*)
WCHAR* 是 LPWSTR,为什么这是错误的?
我建议使用%lS,它解释为LPWSTR,即使Unicode没有定义
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- C 17,lto,-static -libstdc 问题:警告:搬迁是指用ld.gold丢弃的部分,然后是se
- 使用JSON分析问题警告
- QT 信号插槽问题。发出信号,不调用时隙。没有警告,没有错误,没有消息
- 模板类运算符重载的不同错误和警告问题
- "used after it was moved [bugprone-use-after-move]"警告在这里是一个真正的问题吗?
- C 模板继承问题(警告和错误)
- #pragma警告(disable:XXXX)的行为与预期不符(范围问题)
- 修复退货问题.警告:控件到达C++中非void函数的末尾
- 类模板的Makefile问题:clang警告链接器输入未使用
- 我的For循环出了什么问题?我得到警告:有符号和无符号整数表达式之间的比较[-Wsigncompare]
- 在这段代码中,我有一个警告:控制达到非void函数的结束[- return-type].我怎样才能解决这个问题
- 警告C4407会导致什么问题?
- 警告错误问题
- C在运行时警告一个问题
- Lint警告559的问题
- 编译器警告C4251:在*.dll中导出类时出现问题