Partager via


Assertion et messages fournis par l'utilisateur (C++)

Le langage C++ prend en charge trois mécanismes de gestion des erreurs qui vous aident à déboguer votre application : la directive #error, le mot clé static_assert et la macro assert (CRT). Ces trois mécanismes génèrent des messages d'erreur et deux d'entre eux testent également les assertions logicielles. Une assertion logicielle spécifie une condition supposée être vraie en un point particulier de votre programme. Si une assertion au moment de la compilation échoue, le compilateur génère un message de diagnostic et une erreur de compilation. Si une assertion d'exécution échoue, le système d'exploitation génère un message de diagnostic et ferme votre application.

Notes

La durée de vie de votre application se compose d'une phase de prétraitement, de compilation et d'exécution. Chaque mécanisme de gestion des erreurs accède aux informations de débogage disponibles pendant l'une de ces phases. Pour déboguer efficacement, sélectionnez le mécanisme qui fournit des informations pertinentes concernant cette phase :

  • La directive #error est appliquée au moment du prétraitement. Elle génère sans condition un message spécifié par l'utilisateur et provoque l'échec de la compilation avec une erreur. Le message peut contenir du texte manipulé par des directives de préprocesseur, mais aucune expression obtenue n'est évaluée.

  • La déclaration static_assert est appliquée au moment de la compilation. Elle teste une assertion logicielle représentée par une expression intégrale spécifiée par l'utilisateur qui peut être convertie en valeur booléenne. Si l'expression est évaluée à la valeur zéro (false), le compilateur génère le message spécifié par l'utilisateur et la compilation échoue avec une erreur.

    La déclaration static_assert est particulièrement utile pour le débogage des modèles, car des arguments template peuvent être inclus dans l'expression spécifiée par l'utilisateur.

  • La macro assert (CRT) est appliquée au moment de l'exécution. Elle évalue une expression spécifiée par l'utilisateur, et si le résultat est zéro, le système génère un message de diagnostic et ferme votre application. De nombreuses autres macros, telles que_ASSERT et _ASSERTE, ressemblent à cette macro mais génèrent des messages de diagnostic définis par le système ou définis par l'utilisateur différents.

Voir aussi

Référence

#error, directive (C/C++)

assert (CRT)

_ASSERT, _ASSERTE, macros

static_assert

_STATIC_ASSERT, macro

Autres ressources

Modèles