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