在整个代码中是否有更好的,可能更行业标准的方式来打开和关闭调试日志记录?
我目前的情况与此类似:
#define logging
[.. in several places throughout the code ..]
#ifdef logging
cout << "My debug messages\n";
#endif
我只是在不再需要#define logging
时将其注释掉。
这种方法的一些缺点似乎是:
#define logging
#define logging 1
这样的东西,并且能够检查启用了哪个日志级别来确定我的调试输出的粒度。不幸的是,据我所知,#ifdef
并不关心你选择什么价值,它只关心它是定义的 有关于如何更好地实现这一点的建议吗?
答案 0 :(得分:2)
它不是很强大;我更喜欢
#define logging 1
之类的东西,并且能够检查启用了哪个日志级别来确定我的调试输出的粒度。
那你为什么不这样做?只是不要使用#ifdef
进行测试,而是使用#if
进行测试:
#if logging>1
// something
#endif
此外 - 您可以在单独的文件(例如logging
)中定义myDefines.h
并将其包含在其他文件中。
//myDefines.h
#define logging 2
//someOtherFile.h
#include "myDefines.h"
#if logging>1
// something
#endif
答案 1 :(得分:1)
一个建议:
您可以在项目设置中#define logging
而不是在要使用它的每个文件中。
答案 2 :(得分:1)
您可能想要查看Google的glog项目:https://code.google.com/p/google-glog/ 但这可能比你正在寻找的开销更大。
你可以尝试一些简单的方法,授予你的权利 编译器支持-Dmacroname标志,你可以转 在编译期间进行日志记录。例如:
g++ -Dlogging program.cpp -o program
将日志记录宏定义为1。