大小不匹配:当调用“function-name”需要“type”时,“type”作为 Param(number) 传递
注解
此警告指示格式说明符所需的类型和传入的表达式的类型不匹配。 使用错误的格式说明符是未定义的行为。 若要修复警告,请确保格式说明符与传入的表达式的类型匹配。
代码分析名称:FORMAT_SIZE_MISMATCH
示例
以下示例生成 C6328:
#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.
}