【发布时间】:2013-10-31 16:50:41
【问题描述】:
在我们的应用程序中,我们创建了自己的日志系统。在这个日志系统中有几种不同的日志类型,调试、错误、警告、通信、性能等等。有很多 #ifdef 和 #endif 可以禁用特定的日志类型。这些 #ifdef 和 #endif 使代码难以阅读。
我们正在考虑删除这些 #ifdef 和 #endif 并在将消息写入文件之前进行检查。这意味着对日志系统有很多“useless”调用。这些调用不会导致任何写作活动。
没有这些 #ifdef 和 #endif 是否有一种更好 的方法来打开/关闭日志类型>AND 这些“无用”的电话?
【问题讨论】:
-
你能举例说明你的意思吗?您是指每种日志记录类型 1 个 ifdef,还是其他?也许一些显示 ifdefs 的代码会有所帮助......
-
你不能用
#ifdef ENABLE_WARN \n #define WARN(x) printf(x) \n #else \n #define WARN(x) \n #endif之类的东西把所有的ifdefs包含在一个地方吗? -
@cluracan 不是 100% 肯定,但我的猜测是 OP 正试图避免到处都有大量
#ifdef DEBUG ... #endif -
您可以使用 const 全局日志级别并为每种类型(即 if(log_lvl
-
@DennisMeng 你的意思是他将 ifdef 放入代码中?!在这种情况下,只需在定义“log_error/warning/communication”宏的头文件中执行一次 ifdef,该宏要么什么都不做,要么根据日志级别记录?