Warnung C6328
Größenkonflikt: 'Type' wird als Param(Zahl) übergeben, wenn 'type' im Aufruf von 'function-name' erforderlich ist.
Hinweise
Diese Warnung gibt an, dass der vom Formatbezeichner erforderliche Typ und der Typ des übergebenen Ausdrucks nicht übereinstimmen. Die Verwendung des falschen Formatbezeichners ist nicht definiertes Verhalten. Um die Warnung zu beheben, stellen Sie sicher, dass die Formatbezeichner mit den Typen der übergebenen Ausdrücke übereinstimmen.
Name der Codeanalyse: FORMAT_SIZE_MISMATCH
Beispiel
#include <cstdio>
void f(long long a)
{
printf("%d\n", a); // C6328 emitted.
}
Es gibt mehrere Möglichkeiten, das nicht definierte Verhalten zu beheben. Wir können den Formatbezeichner ändern:
#include <cstdio>
void f(long long a)
{
printf("%lld\n", a); // No C6328 emitted.
}
Wir können den Typ des Ausdrucks ändern:
#include <cstdio>
void f(int a)
{
printf("%d\n", a); // No C6328 emitted.
}
Als letzte Möglichkeit, wenn überlauf nicht geschehen kann, können wir eine Umwandlung einführen:
#include <cstdio>
void f(unsigned char a)
{
printf("%hhd\n", static_cast<signed char>(a)); // No C6328 emitted.
}