gpt4 book ai didi

c++ - 如何避免许多 #ifdef 用于记录语句

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:51 24 4
gpt4 key购买 nike

在我们的应用程序中,我们创建了自己的日志系统。在这个日志系统中,有几种不同的日志类型,调试、错误、警告、通信、性能等等。有很多 #ifdef#endif 可以禁用特定的日志类型。这些 #ifdef#endif 使代码难以阅读。

我们正在考虑删除这些 #ifdef#endif 并在消息写入文件之前进行检查。这意味着对日志系统有很多“无用”调用。这些调用不会导致任何写入事件。

如果没有这些 #ifdef#endif,是否有更好的方法来打开/关闭日志类型 AND 这些“无用”调用?

最佳答案

以下情况如何:

// comment out if not needed
#define ENABLE_LOG

#ifdef ENABLE_LOG
# define LOG(x) x
#else
# define LOG(x) (void) 0
#endif

稍后你可以调用:

LOG(mylogger.call());

按照 Dietrich Epp 的建议更新了 #else 部分。

关于c++ - 如何避免许多 #ifdef 用于记录语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com