Digamos que quiero tener varios tipos de mensajes de salida en mi código. Uno de ellos es DEBUG
, que solo se imprime, cuando el código se compila en modo de depuración.
Por lo general, tendría que escribir algo como
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
que es bastante engorroso y molesto de usar en muchos lugares.
¿Es una buena práctica definir una macro para el fragmento de código, por lo que lo usaría de esta manera?
MSG_DEBUG("Debug message")
¿O hay alguna otra manera más elegante de cómo tratarlo sin macros? Estoy interesado en posibles soluciones tanto en C como en C ++, ya que estoy usando ambos lenguajes en diferentes proyectos.
constexpr if
en C ++, por ejemplo.
STDERR
. Además, ¿por qué no hacer que dependa de lo NDEBUG
que assert()
hace en su lugar? Entonces podría definirlo como #define DEBUG_MSG(MSG) assert(std::cerr << MSG)
, que también prueba el estado de flujo.