我需要一些帮助,为'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)
它似乎很简单,但我无法定义一个可以做到这一点的宏.如果有人以前经历过这种情况,请帮忙.
谢谢.
尝试:
#ifdef DEBUG
#define DEBUG_IF(x) if(x)
#else
#define DEBUG_IF(x) if(false)
#endif
Run Code Online (Sandbox Code Playgroud)
现在,这不会是完全相同一样的,你有什么样的权利,因为使用这种方法的时候,里面的代码if块仍然被编译,但它永远不会被运行时DEBUG没有定义,并且可能会被优化掉.相比之下,使用您的原始示例,代码将被预处理器消除,甚至永远不会被编译.
| 归档时间: |
|
| 查看次数: |
7675 次 |
| 最近记录: |