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 ifen C ++, por ejemplo.
STDERR. Además, ¿por qué no hacer que dependa de lo NDEBUGque 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.