Share via


Macro _STATIC_ASSERT

Avaliar uma expressão no time de compilar e gerar um erro quando o resultado é FALSE.

_STATIC_ASSERT(
        booleanExpression
);

Parâmetros

  • booleanExpression
    Expressão (inclusive os ponteiros) que é avaliada como diferente de zero (TRUE) ou 0 ()FALSE).

Comentários

Essa macro é semelhante a Macros _ASSERT e _ASSERTE, exceto que booleanExpression é avaliada em time de compilar em vez de em time de execução. If booleanExpression é avaliada como FALSE (0) C2466 de erro do compilador é gerado.

Exemplo

Neste exemplo, verificamos se o sizeof um int é maior que ou igual a 2 bytes e se o sizeof um long é 1 byte. O programa não será compilado e ele irá gerar C2466 de erro do compilador porque um long é maior que 1 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>

Equivalente do NET Framework

sistema::Diagnóstico::depurar:: Assert

Consulte também

Referência

_ASSERT, _ASSERTE macros

Outros recursos

Referência alfabético função