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
}