假设我要在代码中包含几种类型的输出消息。其中之一是DEBUG
,仅当在Debug模式下编译代码时才打印。
通常我必须写一些像
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
在许多地方使用起来非常麻烦和烦人。
为代码段定义宏是一种好习惯,这样您就可以使用它吗?
MSG_DEBUG("Debug message")
还是有没有其他更优雅的方式在没有宏的情况下如何处理它?我对C和C ++中可能的解决方案感兴趣,因为我在不同的项目中使用了这两种语言。
您可能如何知道您是否编写了可读且易于维护的代码?
—
t
从这个问题尚不清楚,为什么您不只是将条件代码放在函数中并调用它。还有其他约束可以阻止这种情况吗?
—
亚历克斯
@gnat您提到的问题是如此广泛,以至于大多数人不会将其与该主题相关联,尤其是当他们在Internet上查找此特定问题时。
—
Eenoku
顺便说一句,诊断应该去
—
Deduplicator
STDERR
。另外,为什么不把它依赖于NDEBUG
像assert()
做呢?然后,您可以像定义它#define DEBUG_MSG(MSG) assert(std::cerr << MSG)
,它也测试流状态。