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