Sdílet prostřednictvím


_STATIC_ASSERT Makro

Vyhodnoťte výraz v době kompilace a vygenerujte chybu, pokud je FALSEvýsledkem .

Syntaxe

_STATIC_ASSERT(
    booleanExpression
);

Parametry

booleanExpression
Výraz (včetně ukazatelů), který se vyhodnotí jako nenulový (TRUE) nebo 0 (FALSE).

Poznámky

Toto makro se podobá makrem _ASSERT a _ASSERTE makrem s tím rozdílem, že booleanExpression se vyhodnocuje v době kompilace místo za běhu. Pokud booleanExpression se vyhodnotí jako FALSE (0), vygeneruje se chyba kompilátoru C2466 .

Příklad

V tomto příkladu sizeof zkontrolujeme, jestli je větší int než nebo rovna 2 bajtům a zda sizeoflong je 1 bajt. Program se nezkompiluje a vygeneruje chybu kompilátoru C2466 , protože long je větší než 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));
}

Požadavky

Makro Požadovaný hlavičkový soubor
_STATIC_ASSERT <crtdbg.h>

Viz také

Abecední odkaz na funkci
_ASSERT, , _ASSERTE_ASSERT_EXPR makra