Makro _STATIC_ASSERT
Ocenia wyrażenia w czasie kompilacji i generuje błąd, gdy wynik jest FALSE.
_STATIC_ASSERT(
booleanExpression
);
Parametry
- booleanExpression
Wyrażenie (w tym wskaźników), którego wartością niezerową do (TRUE) lub 0 (FALSE).
Uwagi
To makro jest podobna do makra _ASSERT i _ASSERTE, z wyjątkiem, że booleanExpression jest oceniany w czasie kompilacji, a nie w czasie wykonywania.Jeśli booleanExpression wynikiem FALSE (0), C2466 błąd kompilatora jest generowany.
Przykład
W tym przykładzie będziemy sprawdzać czy sizeofint jest większa niż lub równa 2 bajty i czy sizeoflong jest 1 bajt.Program nie zostanie skompilowany i generuje C2466 błąd kompilatora ponieważ long jest większy 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 |
Wymaganego nagłówka |
---|---|
_STATIC_ASSERT |
<crtdbg.h> |
Odpowiednik w programie .NET Framework
System::Diagnostics::Debug:: potwierdzenia