通过


警告 C6328

大小不匹配:当调用“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.
}

另请参阅

C6340