Condividi tramite


assert (CRT)

valuta un'espressione e, quando il risultato è false, stampa un messaggio di diagnostica e arrestare il programma.

void assert( 
   int expression 
);

Parametri

  • expression
    Espressione (inclusi i puntatori) che restituisce un valore diverso da zero o 0.

Note

assert la macro in genere utilizzata per identificare errori logici nel per lo sviluppo di programmi distribuzione expression argomento di valutazione a false solo quando il programma funziona in modo non corretto.Dopo che il debug è completo, il controllo delle asserzioni può essere disattivato senza modificare il file di origine definendo l'identificatore NDEBUG.NDEBUG può essere definito con un oggetto /D opzione della riga di comando o con un oggetto #define direttiva.se NDEBUG viene definito con #define, la direttiva deve essere visualizzato prima che ASSERT.H sia incluso.

assert stampa un messaggio di diagnostica quando expression restituisce false (0) e chiamate interruzione per terminare l'esecuzione del programma.Nessun provvedimento viene creato se expression viene true (diverso da zero).Il messaggio diagnostico include l'espressione non riuscita, il nome del file di origine e il numero di riga in cui l'asserzione avrà esito negativo.

Il messaggio diagnostico viene formattato nei caratteri di tipo " wide ".Pertanto, funzionerà come previsto anche se sono presenti caratteri unicode nell'espressione.

La destinazione del messaggio diagnostico dipende dal tipo di applicazione che ha chiamato la routine.Le applicazioni console riceve sempre il messaggio tramite stderr.In un'applicazione basata su Windows, assert chiama le finestre MessageBox eseguire per creare una finestra di messaggio per visualizzare il messaggio con Scegliere OK pulsante.Quando l'utente sceglie Scegliere OK, le interruzioni del programma immediatamente.

Quando l'applicazione viene collegata a una versione di debug delle librerie di runtime, assert viene creata una finestra di messaggio con tre pulsanti: interruzione, tentativoe Ignorare.Se l'utente fa clic su interruzione, le interruzioni del programma immediatamente.Se l'utente fa clic su tentativo, il debugger viene chiamato e sarà possibile eseguire il debug del programma se è attivato il (JIT) debug JIT.Se l'utente fa clic su Ignorare, assert continua con la relativa esecuzione normale: creare la finestra di messaggio con Scegliere OK pulsante.Si noti che fa clic su Ignorare quando una condizione di errore esiste può generare un comportamento indefinito.

Per ulteriori informazioni sul debug CRT, vedere tecniche di debug CRT.

assert la routine è disponibile sia nella versione che nelle versioni di debug delle librerie di runtime del linguaggio C.altre due macro di asserzione, _ASSERT e _ASSERTE, sono disponibili anche, ma restituiscono solo le espressioni passate a quando _DEBUG il flag è stato definito.

Requisiti

routine

Intestazione di associazione

assert

<assert.h>

Esempio

in questo programma, analyze_string la funzione utilizza assert eseguire per verificare diverse circostanze relative in stringa e la lunghezza.Se una qualsiasi delle condizioni non riesce, il programma stampa un'indicazione del messaggio ciò che ha provocato l'errore.

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

Equivalente .NET Framework

System:: diagnostica:: debug:: asserzione

Vedere anche

Riferimenti

Gestione degli errori (CRT)

Processo e controllo ambiente

abort

raise

signal

_ASSERT, macro di _ASSERTE

_DEBUG