Condividi tramite


Avviso C6328

Mancata corrispondenza delle dimensioni: 'type' passato come Param(number) quando 'type' è necessario nella chiamata a 'function-name'

Osservazioni:

Questo avviso indica che il tipo richiesto dall'identificatore di formato e il tipo dell'espressione passata non corrispondono. L'uso dell'identificatore di formato errato non è definito. Per correggere l'avviso, assicurarsi che gli identificatori di formato corrispondano ai tipi delle espressioni passate.

Nome dell'analisi del codice: FORMAT_SIZE_MISMATCH

Esempio

#include <cstdio>

void f(long long a)
{
    printf("%d\n", a); // C6328 emitted.
}

Esistono diversi modi per correggere il comportamento non definito. È possibile modificare l'identificatore di formato:

#include <cstdio>

void f(long long a)
{
    printf("%lld\n", a); // No C6328 emitted.
}

È possibile modificare il tipo di espressione:

#include <cstdio>

void f(int a)
{
    printf("%d\n", a); // No C6328 emitted.
}

Come ultima risorsa quando non è possibile eseguire l'overflow, è possibile introdurre un cast:

#include <cstdio>

void f(unsigned char a)
{
    printf("%hhd\n", static_cast<signed char>(a)); // No C6328 emitted.
}

Vedi anche

C6340