gpt4 book ai didi

c++ - 有没有比 #if DebugMode 更好的日志记录方法

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

我正在制作一个将从 C# 进行 P/调用的 C++ 库,因此我无法断点/调试事物的 C++ 端。所以我决定添加日志记录,这样我就可以查看是否有任何问题以及发生的地方。我添加了一个 #define DebugMode 1 以确定我是否要登录。首先,我不太擅长 C++,但我知道的足够多了。所以我的问题是:

  1. 有没有比在每个 Log 调用周围包装 #if DebugMode #endif 更好的方法?我可以简单地在 Log 方法中执行此操作,如果未启用日志记录则返回,但这是否意味着所有这些日志记录字符串都将在程序集中?

  2. 我如何模拟 printf 使用其“...”运算符执行的操作,使我能够传递类似 Log("Variable x is {0}", x);

  3. 有什么技巧可以在日志中使用,例如获取行号或某种堆栈跟踪信息吗?

谢谢!

最佳答案

一种简单的方法是只定义一个宏,如果您不处于 Debug模式,它什么也不做。这样您就不必将每个调用都包装在 #ifdef 中。

一个简单的实现可能是:

#if DebugMode
#define MY_LOG(string, ...) printf(string, __VA_ARGS__)
#else
#define MY_LOG(string, ...)
#endif

还有其他方法和库(例如 boost),但这会让您很快得到一些东西。

关于c++ - 有没有比 #if DebugMode 更好的日志记录方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2642809/

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