Dik*_*rAz 2 c++ embedded logging
我正在研究嵌入式项目,在代码中记录信息以进行调试非常方便,但是完全成熟的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
Run Code Online (Sandbox Code Playgroud)
但是我已经有了许多不同的日志记录语句,并且许多预处理器定义使代码看起来很难看.
如果你这样做,你可以消除那些讨厌的#ifdefs和#endifs:
#ifdef DEBUG_ENCODER_PRINTF
#define debug_encoder_printf debug_printf
#else
#define debug_encoder_printf(...)
#endif
Run Code Online (Sandbox Code Playgroud)
debug_encoder_printf("hi")现在将debug_printf在DEBUG_ENCODER_PRINTF定义时调用,但如果未定义,预处理器将删除整个"调用"(替换为空).