Condividi tramite


Asserzioni MFC

Aggiornamento: novembre 2007

Le informazioni contenute in questo argomento sono valide per:

Edition

Visual Basic

C#

C++

Web Developer

Express

Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Standard

Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Pro e Team

Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Legenda tabella:

Argomento applicabile

Si applica

Argomento non applicabile

Non applicabile

Argomento valido ma comando nascosto per impostazione predefinita

Comando o comandi nascosti per impostazione predefinita.

MFC definisce la macro ASSERT per il controllo delle asserzioni. Definisce inoltre ASSERT_VALID e CObject::AssertValid di MFC per il controllo dello stato interno di un oggetto derivato da CObject.

La macro ASSERT di MFC interrompe l'esecuzione del programma e avvisa l'utente se l'argomento (un'espressione) ha valore zero o false. Se l'espressione ha un valore diverso da zero, l'esecuzione continuerà.

Quando un'asserzione ha esito negativo, viene visualizzata una finestra di messaggio indicante il nome del file del codice sorgente e il numero di riga dell'asserzione. Se si sceglie Riprova nella finestra di dialogo, una chiamata a AfxDebugBreak farà sì che l'esecuzione passi al debugger. A questo punto sarà possibile esaminare lo stack di chiamate e altre utilità del debugger per determinare la causa della mancata riuscita dell'asserzione. Se si è attivato il debug JIT, la finestra di dialogo potrà avviare il debugger se non era già in esecuzione quando si è verificato il fallimento dell'asserzione.

L'esempio che segue illustra come utilizzare ASSERT per controllare il valore restituito da una funzione:

int x = SomeFunc(y);
ASSERT(x >= 0);   //  Assertion fails if x is negative

È possibile utilizzare ASSERT con la funzione IsKindOf per fornire il controllo di tipo per gli argomenti della funzione:

ASSERT( pObject1->IsKindOf( RUNTIME_CLASS( CPerson ) ) );

La macro ASSERT rileva gli errori di programma solo nella versione di debug del programma. La macro non produce alcun codice nella versione di rilascio. Se è necessario valutare l'espressione nella versione di rilascio, utilizzare la macro VERIFY anziché ASSERT.

Vedere anche

Concetti

Asserzioni