如何实现这样的c++宏

#define idebug(...) 
  #ifdef _DEBUG
    printf(__VA_ARGS__);
  #endif
#endif

很难描述意图,这通常意味着我预先定义了一个宏 idebug 来保存一些代码。如果预定义了 _ DEBUG 标志,则打印输出。或者假装什么都没发生。

如果我们使用函数实现它,它将如下所示:

void idebug(...)
{
  #ifdef _DEBUG
    printf(...);
  #endif
}

假设有一个程序

int main()                    
{                            
  int a = 10;         
  idebug("a:%dn",a);      
}                           

当我们处于调试阶段时,我们需要编译器的输出:

int main()                    
{                            
  int a = 10;         
  printf("a:%dn",a);      
} 

如果我们处于发布阶段,我们需要编译器的输出:

int main()                    
{                            
  int a = 10;         
} 

回答

用另一种方式做:

#ifdef _DEBUG
# define idebug(...) printf(__VA_ARGS__)
#else
# define idebug(...) ((void)0)
#endif


以上是如何实现这样的c++宏的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>