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 ifen C ++, par exemple.
STDERR. Aussi, pourquoi ne pas le faire dépendre NDEBUGcomme 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.