如何编写仅在DEBUG #defined时编译的'if'条件?

And*_* Or 4 c++ macros

我需要一些帮助,为'if-condition'编写一个宏,只有在#define指令定义了DEBUG标志时才会编译.

这是一个说明我想要的例子.第一段代码显示了使用#ifdef编写if条件的常用方法.

#ifdef DEBUG
if( rv == false )
{
     string errorStr = "error in return value" ;
     cout << errorStr << endl ;
     throw( Exception(errorStr) ) ;
}
Run Code Online (Sandbox Code Playgroud)

我想以类似下面的方式编写它:

DEBUG_IF( rv==false )
{
     same code as above
}
Run Code Online (Sandbox Code Playgroud)

它似乎很简单,但我无法定义一个可以做到这一点的宏.如果有人以前经历过这种情况,请帮忙.

谢谢.

Tyl*_*nry 9

尝试:

#ifdef DEBUG
  #define DEBUG_IF(x) if(x)
#else
  #define DEBUG_IF(x) if(false)
#endif
Run Code Online (Sandbox Code Playgroud)

现在,这不会是完全相同一样的,你有什么样的权利,因为使用这种方法的时候,里面的代码if块仍然被编译,但它永远不会被运行DEBUG没有定义,并且可能会被优化掉.相比之下,使用您的原始示例,代码将被预处理器消除,甚至永远不会被编译.