Предупреждение C6302
Несоответствие строк форматирования.
Замечания
Это предупреждение указывает на то, что строка формата задает широкую символьную строку, но вместо этого передается узкой строкой символов. Одна из причин предупреждения заключается в том, что значение %s
и %S
перевернутые при использовании с printf
или wprintf
. Этот дефект может привести к сбоям в дополнение к потенциально неправильным выходным данным.
Имя анализа кода: CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION
Пример
Следующий код создает это предупреждение. buff
является узкой строкой символовprintf_s
, но wprintf_s
является широким вариантом строки и поэтому ожидается%s
, что она будет широкой:
void f()
{
char buff[5] = "hi";
wprintf_s(L"%s", buff);
}
В следующем примере кода эта проблема устранена с помощью %hs
указания строки символов с одним байтом. Кроме того, он мог бы переключиться %S
на , которая является узкой строкой при использовании с wprintf
такими функциями. Дополнительные параметры см. в синтаксисе спецификации формата: printf
и wprintf
функции .
void f()
{
char buff[5] = "hi";
wprintf_s(L"%hs", buff);
}
См. также
Синтаксис спецификации форматирования: printf
и wprintf
функции
C4477
C6303
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по