wsprintf
次のコードは、呼び出しに対して Lint 警告 559「フォーマットと矛盾する引数番号 3 のサイズ」を生成します。誰でも理由を説明できますか?
WCHAR szFoo[] = L"test";
WCHAR szBar[MAX_PATH];
wsprintf(szBar, L"c:\\path\\%s\\path", szFoo);
面白いことに、フォーマット タイプを変更する%S
と警告は発生しなくなりますが、これはもちろん szFoo を LPWSTR ではなく LPSTR として再解釈しますが、これも間違っています。
もちろん、警告をリントコメントで取り除くこともできますが、問題があると考える理由を知りたいです。