Digamos que eu quero ter vários tipos de mensagens de saída no meu código. Um deles é DEBUG
, que é impresso apenas, quando o código é compilado no modo de Depuração.
Normalmente eu teria que escrever algo como
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
o que é bastante complicado e chato de usar em muitos lugares.
É uma boa prática definir uma macro para o snippet de código, para que você a use dessa maneira?
MSG_DEBUG("Debug message")
Ou existe outra maneira mais elegante de lidar com isso sem macros? Estou interessado em possíveis soluções em C e C ++, pois estou usando as duas linguagens em diferentes projetos.
constexpr if
em C ++, por exemplo.
STDERR
. Além disso, por que não fazê-lo depender NDEBUG
como em assert()
vez disso? Então você pode definir como #define DEBUG_MSG(MSG) assert(std::cerr << MSG)
, que também testa o estado do fluxo.