Diciamo che voglio avere diversi tipi di messaggi di output nel mio codice. Uno di questi è DEBUG
, che viene stampato solo, quando il codice viene compilato in modalità Debug.
Di solito dovrei scrivere qualcosa del genere
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
che è piuttosto ingombrante e fastidioso da usare in molti luoghi.
È buona norma definire una macro per lo snippet di codice, quindi la useresti in questo modo?
MSG_DEBUG("Debug message")
O c'è un altro modo più elegante come affrontarlo senza macro? Sono interessato a possibili soluzioni sia in C che in C ++, poiché sto usando entrambe le lingue in diversi progetti.
constexpr if
in C ++, per esempio.
STDERR
. Inoltre, perché non farlo dipendere da NDEBUG
come assert()
fa invece? Quindi potresti definirlo come #define DEBUG_MSG(MSG) assert(std::cerr << MSG)
, che verifica anche lo stato del flusso.