c++ - C++ 的最小条件日志记录

标签 c++ logging embedded

我正在从事嵌入式项目,为了调试目的在代码中记录信息非常方便,但完全成熟的 C++ 记录器库在嵌入式环境中几乎不可用。 你能建议如何实现简单、干净和快速的日志记录模块吗?我真的不需要对日志记录后端、输出、级别等进行精细控制。我只想启用和禁用日志记录语句而不混淆代码。目前我是这样做的:

#define DEBUG_ENCODER_PRINTF

// ...

#ifdef DEBUG_ENCODER_PRINTF
    debug_printf("enc: %d %d\r\n",
                 get_encoder_unwrapped(0),
                 get_encoder_unwrapped(1));
#endif

但我已经有几十种不同的日志记录语句,而且大量的预处理器定义让代码看起来很难看。

最佳答案

如果您这样做,您可以消除那些讨厌的 #ifdef#endif:

#ifdef DEBUG_ENCODER_PRINTF
    #define debug_encoder_printf debug_printf
#else
    #define debug_encoder_printf(...)
#endif

debug_encoder_printf("hi") 现在将在定义 DEBUG_ENCODER_PRINTF 时调用 debug_printf,但如果未定义,则整个“调用"将被预处理器删除(替换为空)。

关于c++ - C++ 的最小条件日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34011171/

相关文章:

embedded - 用于在嵌入式 CPU 和 PC 之间进行通信的协议(protocol)

c - STM32 STM32CubeF4 USB CDC操作

python - 为什么我不能跟踪我的日志?

c - ARM 上的高效复制,两个 16 位提取还是 1 个 32 位?

c++ - 如何进行并行双线性插值

c++ - 将 Visual C++ 与不同的 C++ 编译器一起使用?

从 loop.create_task() 引发的 python asyncio 异常

ruby-on-rails - Rails 不记录请求

c++ - 乘以 100 万

c++ - 为什么 void* 不是迭代器类型?