Udostępnij za pośrednictwem


Ostrzeżenie C6396

sizeof('integerConstant') zawsze zwraca rozmiar bazowego typu całkowitego

Uwagi

To ostrzeżenie wskazuje, gdzie stała całkowita jest używana jako sizeof argument. Takie wyrażenie zawsze zwraca rozmiar typu stałej. Lepiej zamiast tego napisać sizeof(type) . To ostrzeżenie przechwytuje typowe literówki w obliczeniach przesunięcia buforu.

To sprawdzanie ignoruje literały znaków, ponieważ buffer_size += sizeof(UNICODE_NULL) jest typowym idiomem.

Przykład

void f()
{  
    int a = sizeof(5);         // C6396 reported here
}

Aby rozwiązać ten problem, zastąp stałą całkowitą swoim typem:

void f()
{  
    int a = sizeof(int);         // no C6396 reported here
}