如何实现这样的 C++ 宏

How to achieve a c++ macros like this

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

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

如果我们用一个函数来实现它,它会是这样的:

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

假设有一个程序

int main()                    
{                            
  int a = 10;         
  idebug("a:%d\n",a);      
}                           

当我们处于调试阶段时,我们希望编译器输出:

int main()                    
{                            
  int a = 10;         
  printf("a:%d\n",a);      
} 

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

int main()                    
{                            
  int a = 10;         
} 

反其道而行之:

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