_STATIC_ASSERT Makro

Oblicz wyrażenie w czasie kompilacji i wygeneruj błąd, gdy wynik to FALSE.

Składnia

_STATIC_ASSERT(
    booleanExpression
);

Parametry

booleanExpression
Wyrażenie (w tym wskaźniki), które oblicza wartość niezerowa (TRUE) lub 0 (FALSE).

Uwagi

To makro przypomina makra _ASSERTi_ASSERTE, z tą różnicą, że booleanExpression jest oceniane w czasie kompilacji zamiast w czasie wykonywania. Jeśli booleanExpression zostanie obliczona FALSE wartość (0), zostanie wygenerowany błąd kompilatora C2466 .

Przykład

W tym przykładzie sprawdzamy, czy sizeof wartość jest int większa niż lub równa 2 bajtom oraz czy sizeof wartość a long to 1 bajt. Program nie zostanie skompilowany i wygeneruje błąd kompilatora C2466 , ponieważ wartość jest long większa niż 1 bajt.

// crt__static_assert.c

#include <crtdbg.h>
#include <stdio.h>

_STATIC_ASSERT(sizeof(int) >= 2);
_STATIC_ASSERT(sizeof(long) == 1);  // C2466

int main()
{
    printf("I am sure that sizeof(int) will be >= 2: %d\n",
        sizeof(int));
    printf("I am not so sure that sizeof(long) == 1: %d\n",
        sizeof(long));
}

Wymagania

Macro Wymagany nagłówek
_STATIC_ASSERT <Crtdbg.h>

Zobacz też

Odwołanie do funkcji alfabetycznej
_ASSERT, , _ASSERTE_ASSERT_EXPR makra