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
, _ASSERTE
macros _ASSERT_EXPR