_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 _ASSERT
i_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
Makro | Wymagany nagłówek |
---|---|
_STATIC_ASSERT |
<crtdbg.h> |
Zobacz też
Odwołanie do funkcji alfabetycznej
_ASSERT
, , _ASSERTE
_ASSERT_EXPR
makra