Condividi tramite


Asserzioni MFC

Le informazioni contenute in questo argomento sono valide per:

Edizione

Visual Basic

C#

F#

C++

Web Developer

Express

Argomento non applicabile Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

Pro, Premium e Ultimate

Argomento non applicabile Argomento non applicabile Argomento non applicabile

Solo nativo

Argomento non applicabile

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