Freigeben über


_STATIC_ASSERT-Makro

Werten Sie einen Ausdruck zur Kompilierzeit ausgeführt und generieren Sie einen Fehler, wenn das Ergebnis FALSE ist.

_STATIC_ASSERT(
    booleanExpression
);

Parameter

  • booleanExpression
    Ausdruck (einschließlich Zeiger) bis der Wert ungleich 0 (null) (TRUE) oder 0 ergibt (FALSE).

Hinweise

Dieses Makro entspricht _ASSERT und _ASSERTE Makros, außer dass booleanExpression wird zur Kompilierzeit statt zur Laufzeit ausgewertet. Wenn booleanExpression auf FALSE (0) ergibt, wird Compilerfehler C2466 generiert.

Beispiel

In diesem Beispiel untersuchen wir, dass sizeof größer als int ist, oder gleich 2 Bytes und ob sizeoflong 1 Byte ist. Das Programm wird nicht kompiliert und sie generiert Compilerfehler C2466, da long 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>

.NET Framework-Entsprechung

System::Diagnostics::Debug::Assert

Siehe auch

Referenz

_ASSERT- und _ASSERTE-Makros

Weitere Ressourcen

CRT-Funktionsreferenz (alphabetisch)