如果定义了DEBUG
,我想跟踪我的代码,如下面的#ifdef
代码块所示:
#ifdef DEBUG
OP_LOG(debug) << "SEQUENCE: " __FILE__ << "::" << __FUNCTION__;
#endif
有人说我可以使用#define
,这样上面的三行只会是一行。这是我能够找到它的最接近的,但它无条件地提供跟踪输出,无论是否定义了DEBUG
:
#define DEBUG_TRACE(note) OP_LOG(debug) << "SEQUENCE : " << __FILE__ <<"::" <<__FUNCTION__ << note
我不知道如何制作条件#define
。这是可能的,如果是的话,怎么做?
答案 0 :(得分:5)
您无法将#ifdef
放入#define
的替换部分,但 可以使用内的#define
#ifdef
/ #endif
阻止,如下:
#ifdef DEBUG
#define DEBUG_TRACE(note) ... // put your debug code here
#else
#define DEBUG_TRACE(note)
#endif
在#else
案例中,如果未定义DEBUG_TRACE
,则定义DEBUG
展开为空。
答案 1 :(得分:3)
有人说我可以创建一个#define,所以上面三行只会是一行。
不是我听说过的。我最喜欢的方法是
#ifdef DEBUG
#define DEBUG_LOG OP_LOG(debug) << "SEQUENCE: " __FILE__ << "::" << __FUNCTION__;
#else
#define DEBUG_LOG
#endif
这样,只有在设置-DDEBUG
时才需要记录DEBUG_LOG。
查看#ifdef
,#else
,#endif
声明。我们将DEBUG_LOG
定义为在未设置-DDEBUG
时展开为空,如果是OP_LOG(debug) << "SEQUENCE: " __FILE__ << "::" << __FUNCTION__;
则展开为-DDEBUG
。这样您以后就不必担心DEBUG_LOG
,只需要在跟踪调用时使用\r\n
。