Partage via


Macro _STATIC_ASSERT

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

Syntaxe

_STATIC_ASSERT(
    booleanExpression
);

Paramètres

booleanExpression
Expression (pointeurs inclus) qui prend une valeur différente de zéro (TRUE) ou 0 (FALSE).

Notes

Cette macro ressemble aux macros, _ASSERTE sauf qu’elle booleanExpression est évaluée au moment de la _ASSERT compilation au lieu de l’exécution. Si booleanExpression a la valeur FALSE (0), l’erreur du compilateur C2466 est générée.

Exemple

Dans cet exemple, nous vérifions si la valeur de sizeof d’un int représente 2 octets ou plus et si la valeur de sizeof d’un long représente 1 octet. Le programme ne sera pas compilé et génère l’erreur du compilateur C2466 , car un long octet est supérieur à 1 octet.

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

Spécifications

Macro En-tête requis
_STATIC_ASSERT <crtdbg.h>

Voir aussi

Référence de fonction alphabétique
_ASSERT, _ASSERTEmacros _ASSERT_EXPR