Freigeben über


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.

Regel für die 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.
}

Weitere Informationen

C6340