Следующий код генерирует предупреждение Lint 559 «Размер аргумента № 3, несовместимый с форматом» для вызова wsprintf
, кто-нибудь может объяснить почему?
WCHAR szFoo[] = L"test";
WCHAR szBar[MAX_PATH];
wsprintf(szBar, L"c:\\path\\%s\\path", szFoo);
Забавно, если я изменю тип формата на %S
, предупреждение больше не будет выдаваться, но это, конечно, повторно интерпретирует szFoo как LPSTR, а не LPWSTR, что также неправильно.
Конечно, я могу просто прокомментировать предупреждение, но мне интересно знать, почему оно считает, что есть проблема.