Disons que je veux avoir plusieurs types de messages de sortie dans mon code. L'un d'eux est DEBUG
, qui est imprimé uniquement, lorsque le code est compilé en mode débogage.
Habituellement, je devrais écrire quelque chose comme
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
ce qui est assez lourd et ennuyeux à utiliser dans de nombreux endroits.
Est-ce une bonne pratique de définir une macro pour l'extrait de code, donc vous l'utiliseriez de cette façon?
MSG_DEBUG("Debug message")
Ou existe-t-il une autre manière plus élégante de gérer cela sans macros? Je m'intéresse aux solutions possibles en C et C ++, car j'utilise les deux langages dans différents projets.
constexpr if
en C ++, par exemple.
STDERR
. Aussi, pourquoi ne pas le faire dépendre NDEBUG
comme assert()
ça à la place? Ensuite, vous pouvez le définir comme #define DEBUG_MSG(MSG) assert(std::cerr << MSG)
, qui teste également l'état du flux.