Asserzione e messaggi forniti dall'utente (C++)

Il linguaggio C++ supporta tre meccanismi di gestione degli errori che consentono di eseguire il debug dell'applicazione: la direttiva #error, la parola chiave static_assert e l'asserzione Macro, _assert, _wassert macro. Tutti i tre meccanismi generano messaggi di errore e due eseguono anche il test di asserzioni software. Un'asserzione software specifica una condizione che si prevede abbia valore True in un particolare punto del programma. Se un'asserzione sull'ora di compilazione non riesce, il compilatore genera un messaggio di diagnostica e un errore di compilazione. Se un'asserzione di runtime non riesce, il sistema operativo genera un messaggio di diagnostica e chiude l'applicazione.

Osservazioni:

La durata dell'applicazione è costituita dalla pre-elaborazione, dalla compilazione e dalla fase di esecuzione. Ciascun meccanismo di gestione degli errori accede a informazioni di debug disponibili durante una di queste fasi. Per eseguire il debug in modo efficace, selezionare il meccanismo che fornisce le informazioni corrette su quella fase:

  • La direttiva #error è attiva in fase di pre-elaborazione. Genera incondizionatamente un messaggio specificato dall'utente e determina l'esito negativo della compilazione con un errore. Il messaggio può contenere testo che viene modificato dalle direttive per il preprocessore, ma qualsiasi espressione risultante non viene valutata.

  • La dichiarazione static_assert è attiva in fase di compilazione. Esegue il test di un'asserzione software rappresentata da un'espressione integrale specificata dall'utente che può essere convertita in un valore booleano. Se l'espressione restituisce valori zero (false), il compilatore genera il messaggio specificato dall'utente e la compilazione ha esito negativo con un errore.

    La dichiarazione static_assert è particolarmente utile per il debug di modelli perché argomenti di modello possono essere inclusi nell'espressione specificata dall'utente.

  • L'asserzione Macro, _assert, _wassert macro è attiva in fase di esecuzione. Restituisce un'espressione specificata dall'utente e se il risultato è zero, il sistema genera un messaggio di diagnostica e chiude l'applicazione. Molte altre macro, ad esempio_ASedizione Standard RT e _ASedizione Standard RTE, sono simili a questa macro, ma generano messaggi di diagnostica definiti dal sistema o definiti dall'utente diversi.

Vedi anche

Direttiva #error (C/C++)
assert Macro, _assert, _wassert
Macro _ASSERT, _ASSERTE, _ASSERT_EXPR
static_assert
Macro _STATIC_ASSERT
Modelli