Freigeben über


_STATIC_ASSERT-Makro

Auswerten eines Ausdrucks zur Kompilierzeit und Generieren eines Fehlers, wenn das Ergebnis FALSE ist

Syntax

_STATIC_ASSERT(
    booleanExpression
);

Parameter

booleanExpression
Ausdruck (einschließlich Zeiger) der zu ungleich null (TRUE) oder 0 (FALSE) ausgewertet wird.

Hinweise

Dieses Makro ähnelt den _ASSERT Makros und _ASSERTE makros, mit der Ausnahme, dass booleanExpression zur Kompilierungszeit statt zur Laufzeit ausgewertet wird. Wenn booleanExpressionFALSE (0) ergibt, wird Compilerfehler C2466 generiert.

Beispiel

In diesem Beispiel wird überprüft, ob das sizeof eines int größer als oder gleich 2 Bytes und das sizeof eines long 1 Byte ist. Das Programm wird nicht kompiliert und generiert Compilerfehler C2466 , da ein long Byte größer als 1 Byte ist.

// 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));
}

Anforderungen

Makro Erforderlicher Header
_STATIC_ASSERT <crtdbg.h>

Siehe auch

Alphabetische Funktionsreferenz
_ASSERT, _ASSERTEMakros _ASSERT_EXPR