Partager via


_STATIC_ASSERT, macro

Évalue une expression au moment de la compilation et génère une erreur lorsque le résultat est FALSE.

_STATIC_ASSERT(
    booleanExpression
);

Paramètres

  • booleanExpression
    Expression (pointeurs compris) qui s'évalue à une valeur non nulle (TRUE) ou 0 (FALSE).

Notes

Cette macro ressemble à macros de _ASSERT et de _ASSERTE, sauf que booleanExpression est évaluée au moment de la compilation et non au moment de l'exécution. Si booleanExpression prend la valeur FALSE (0), Erreur du compilateur C2466 est généré.

Exemple

Dans cet exemple, nous vérifions si la sizeof un int dépasse ou égale 2 octets et si la sizeof un long est de 1 octet. Le programme ne compilera pas et il génèrera Erreur du compilateur C2466 car long est supérieur à 1 octets.

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

Configuration requise

Macro

En-tête requis

_STATIC_ASSERT

<crtdbg.h>

Équivalent .NET Framework

System::Diagnostics::Debug::Assert

Voir aussi

Référence

_ASSERT, _ASSERTE, macros

Autres ressources

Référence alphabétique des fonctions CRT