Asserzioni MFC
Le informazioni contenute in questo argomento sono valide per:
Edizione |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Solo nativo |
||||
Pro, Premium e Ultimate |
Solo nativo |
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.