assert (CRT)
Évalue une expression et, lorsque le résultat est false, imprime un message de diagnostic et interrompt le programme.
void assert(
int expression
);
Paramètres
- expression
Expression (pointeurs) qui prend une valeur différente de zéro ou 0.
Notes
La macro d' assert est généralement utilisée pour identifier des erreurs de logique pendant le développement des programmes en implémentant l'argument d' expression pour correspondre à false uniquement lorsque le programme fonctionne correctement.Une fois que le débogage est terminé, la vérification des assertions peut être désactivé sans modifier le fichier source en définissant l'identificateur NDEBUG.NDEBUG peut être défini avec une option de ligne de commande pour /D ou avec une directive d' #define .Si NDEBUG est défini avec #define, la directive doit apparaître avant qu'ASSERT.H est inclus.
assert imprime un message de diagnostic lorsque expression correspond à false (0) et appelle arrêt pour terminer l'exécution du programme.Aucune action n'est effectuée si expression est true (différent de zéro).Le message de diagnostic inclut l'expression, le nom du fichier source et le numéro de ligne où l'assertion a échoué.
Le message de diagnostic est imprimé caractères larges.Par conséquent, il fonctionne comme prévu même si des caractères Unicode dans l'expression.
La destination des messages de diagnostic dépend du type d'application qui a appelé la routine.Les applications console acceptent toujours le message via stderr.Dans une application Windows, assert appelle la fonction de MessageBox windows pour créer un message pour afficher le message avec un bouton d' OK .Lorsque l'utilisateur clique sur OK, le programme s'interrompt immédiatement.
Lorsque l'application est liée à une version debug des bibliothèques Runtime, assert crée un message avec trois boutons : Abandonner, Réessayer, et Ignorer.si l'utilisateur clique sur Abandonner, le programme s'interrompt immédiatement.si l'utilisateur clique sur Réessayer, le débogueur est appelé et l'utilisateur peut mettre le programme si le débogage juste-à-temps (JIT) est activé.si l'utilisateur clique sur Ignorer, assert continue son exécution normale : créer le message avec le bouton d' OK .Notez qu'un clic sur Ignorer lorsqu'une condition d'erreur existe peut entraîner un comportement indéfini.
Pour plus d'informations sur le débogage CRT, consultez Techniques de débogage CRT.
La routine d' assert sont disponibles dans la version release et debug des bibliothèques runtime C.Deux autres macros d'assertion, _ASSERT et _ASSERTE, sont également disponibles, mais elles correspondent uniquement les expressions passées lorsque la balise de _DEBUG a été définie.
Configuration requise
routine |
en-tête requis |
---|---|
assert |
<assert.h> |
Exemple
Dans ce programme, la fonction d' analyze_string utilise la fonction d' assert pour tester plusieurs conditions relatives à la chaîne et de longueur.Si les conditions l'une d'elles échoue, le programme imprime indiquer de message ce qui a provoqué l'échec.
// crt_assert.c
// compile with: /c
#include <stdio.h>
#include <assert.h>
#include <string.h>
void analyze_string( char *string ); // Prototype
int main( void )
{
char test1[] = "abc", *test2 = NULL, test3[] = "";
printf ( "Analyzing string '%s'\n", test1 ); fflush( stdout );
analyze_string( test1 );
printf ( "Analyzing string '%s'\n", test2 ); fflush( stdout );
analyze_string( test2 );
printf ( "Analyzing string '%s'\n", test3 ); fflush( stdout );
analyze_string( test3 );
}
// Tests a string to see if it is NULL,
// empty, or longer than 0 characters.
void analyze_string( char * string )
{
assert( string != NULL ); // Cannot be NULL
assert( *string != '\0' ); // Cannot be empty
assert( strlen( string ) > 2 ); // Length must exceed 2
}
Équivalent .NET Framework
System : : diagnostic : : débogage : : assertion