3
#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;         
} 
4

1 回答 1

10

以另一种方式进行:

#ifdef _DEBUG
# define idebug(...) printf(__VA_ARGS__)
#else
# define idebug(...) ((void)0)
#endif
于 2021-06-30T12:13:40.440 回答