Macro _STATIC_ASSERT
Avaliar uma expressão em tempo de compilação e gerar um erro quando o resultado é FALSE
.
Sintaxe
_STATIC_ASSERT(
booleanExpression
);
Parâmetros
booleanExpression
Uma expressão (incluindo ponteiros) avaliada como não zero (TRUE
) ou 0 (FALSE
).
Comentários
Essa macro é semelhante às _ASSERT
macros and_ASSERTE
, exceto que booleanExpression
é avaliada em tempo de compilação em vez de em tempo de execução. Se booleanExpression
é avaliada como FALSE
(0), o Erro do compilador C2466 é gerado.
Exemplo
Neste exemplo, verificamos se o sizeof
um int
é maior ou igual a 2 bytes e se o sizeof
um long
é 1 byte. O programa não será compilado e gerará o erro do compilador C2466 porque a é maior que 1 long
byte.
// 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));
}
Requisitos
Macro | Cabeçalho necessário |
---|---|
_STATIC_ASSERT |
<crtdbg.h> |
Confira também
Referência alfabética de função
_ASSERT
, _ASSERTE
, _ASSERT_EXPR
macros