繁体   English   中英

Linux上的C ++-如何#define #ifdef / #endif调试条件

[英]C++ on Linux - How do I #define a #ifdef / #endif debug conditional

如果要定义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 这可能吗?如果可以,怎么做?

您不能将#ifdef放在#define的替换部分中,但是可以 #ifdef / #endif使用#define ,如下所示:

#ifdef DEBUG
#define DEBUG_TRACE(note) ... // put your debug code here
#else
#define DEBUG_TRACE(note)
#endif

#else情况下,如果未定义DEBUG ,则将DEBUG_TRACE定义为扩展为DEBUG_TRACE

有人说我可以创建一个#define,这样上面的三行就只能是一行。

不是我听说过的。 我最喜欢的方法是

#ifdef DEBUG
#define DEBUG_LOG OP_LOG(debug) << "SEQUENCE:  " __FILE__ << "::" << __FUNCTION__;
#else
#define DEBUG_LOG
#endif

这样,你必须只写DEBUG_LOG在任何你想,如果只记录-DDEBUG设置。


工作方式:

查看#ifdef#else#endif语句。 我们定义DEBUG_LOG扩大到什么时候-DDEBUG并没有被设置为OP_LOG(debug) << "SEQUENCE: " __FILE__ << "::" << __FUNCTION__; 如果是。 这样,您以后就不必担心-DDEBUG了,只需在要进行跟踪调用时使用DEBUG_LOG

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM