Предупреждение 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