我正在用 ANSI C 编写一个小型项目。我还计划使用日志系统,例如 zlog 。但是,我不希望项目在发布时依赖于 zlog,只在开发时需要它。当我在 DEBUG 和 RELEASE 模式之间切换时,打开/关闭这些日志记录语句的正确方法是什么?
例如,我有一个指定的配置文件
mode = DEBUG | RELEASE
当 mode = RELEASE 时,我希望项目源文件中包含所有这些指令,例如
#include "zlog.h"
或
zlog_init("init_file")
等等。消失,因此该项目不需要与 zlog 链接。
当然,可以使用宏来包围每个 zlog 用法来实现这一点,但这看起来很尴尬,我想有更优雅的方法来打开/关闭这些日志指令?
最佳答案
我建议添加一个源文件,该文件定义您引用的所有 zlog 接口(interface)并由宏保护,指定它是处于 DEBUG 还是 RELEASE 模式。
例如:
#ifdef NDEBUG
/* It's RELEASE mode */
int zlog_init(const char *confpath) { return 0; }
int zlog_reload(const char *confpath) { return 0; }
void zlog_fini(void) {}
/* ... */
#endif
当调试时,文件只是空的(由于未定义的NDEBUG
宏),并且zlog_*()
链接到真正的zlog库; RELEASing 时,不要链接到真实的 zlog,而是链接到此虚拟源文件中定义的无操作函数。
关于c - 在开发模式为 DEBUG 或 RELEASE 后打开/关闭日志记录(例如 zlog),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30034203/