Предупреждение C6328
Несоответствие размера: тип, передаваемый как Param(number), если тип требуется при вызове "function-name"
Замечания
Это предупреждение указывает, что тип, необходимый описателям формата, и тип переданного выражения не совпадает. Использование неправильного описателя формата является неопределенным поведением. Чтобы исправить предупреждение, убедитесь, что описатели формата соответствуют типам переданных выражений.
Имя анализа кода: FORMAT_SIZE_MISMATCH
Пример
#include <cstdio>
void f(long long a)
{
printf("%d\n", a); // C6328 emitted.
}
Существует несколько способов устранения неопределенного поведения. Мы можем изменить описатель формата:
#include <cstdio>
void f(long long a)
{
printf("%lld\n", a); // No C6328 emitted.
}
Мы можем изменить тип выражения:
#include <cstdio>
void f(int a)
{
printf("%d\n", a); // No C6328 emitted.
}
Как последний курорт, когда переполнение не может произойти, мы можем ввести приведение:
#include <cstdio>
void f(unsigned char a)
{
printf("%hhd\n", static_cast<signed char>(a)); // No C6328 emitted.
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по