Assert.h
Cet article est une ébauche concernant l’informatique.
<assert.h> est un fichier d'en-tête présent dans la bibliothèque standard du langage C qui définit la macro assert. La macro met en œuvre une assertion, qui peut être utilisée pour vérifier les hypothèses formulées par le programme.
Pour le langage C++, le fichier équivalent est
<cassert>[1].
L'assertion est la base du paradigme de programmation par contrat[2]. Elle peut être utilisée pour tester une précondition, une postcondition ou un invariant.
La macro assert diagnostique les assertions dans le programme. Lorsqu'il est exécuté, si l'expression est vraie, le programme continue. Mais si l'expression est fausse (c'est-à-dire égale à 0), assert écrit des informations sur l'appel qui a échoué dans stderr, puis appelle abort ; plus précisément, les informations écrites dans stderr sont :
- le nom du fichier source ;
- le numéro de la ligne concernée dans le code source ;
- la fonction mise en jeu dans le code source ;
- le texte de l'expression qui a été évaluée à 0.
Les assertions implémentées par la macro assert ne sont diagnostiquées que lors de l'exécution du code compilé en mode de débogage. Si le code est compilé en mode opérationnel (dit mode release), les assertions ne sont pas diagnostiquées[1].
Exemple d'utilisation
#include <stdio.h>
#include <assert.h>
int test_assert ( int x )
{
assert( x <= 4 );
return x;
}
int main ( void )
{
int i;
for (i=0; i<=9; i++){
test_assert( i );
printf("i = %i\n", i);
}
return 0;
}
Le code précédent affiche le résultat suivant :
i = 0 i = 1 i = 2 i = 3 i = 4 assert: assert.c:6: test_assert: Assertion `x <= 4' failed. Aborted
Ici, le programme est interrompu pendant l'exécution de test_assert appelée avec le paramètre 5.
Références
- « C++ Assert », sur www.programiz.com (consulté le )
- ↑ Emmanuel CHENU, « Programmez par Contrat »
[PDF], (consulté le )
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.