Asserzioni C ++ che possono visualizzare una stringa personalizzata con Boost o STL?
Domanda
Voglio davvero poter andare: (in C ++)
assert( num > 0, "The number must be greater than zero!");
In C # XNA, hanno un metodo che fa esattamente questo:
Debug.Assert( num > 0, "The number must be greater than zero!");
Esiste un modo per farlo in modo che il runtime mi dia un errore pieno di significato non solo "un'asserzione fallita" errore?
Soluzione
Puoi usarlo nella maggior parte delle asserzioni:
assert(("The number must be greater than zero!", num > 0));
Altri suggerimenti
Il runtime di solito mostra l'espressione non riuscita, quindi puoi fare qualcosa del genere:
assert(num > 0 && "The number must be greater than zero!");
Ciò non influirà sulla logica, ma il messaggio di errore dell'asserzione conterrà una stringa descrittiva.
Inoltre, funziona senza la necessità di STL o Boost.
Usa assert (num > 0 & amp; & amp; " Il numero deve essere maggiore di zero! ");
Usando BOOST puoi usare la loro affermazione come descritto in http: //www.boost.org/doc/libs/1_50_0/libs/utility/assert.html :
#include <boost/assert.hpp>
/* ... */
BOOST_ASSERT_MSG( num > 0, "The number must be greater than zero!");
farebbe esattamente come richiesto.