ant*_*ity 3 c++ macros predefined-macro
#define idebug(...) \
\#ifdef _DEBUG\
printf(__VA_ARGS__);\
\#endif\
#endif
Run Code Online (Sandbox Code Playgroud)
很难描述意图,这通常意味着我预先定义了一个宏 idebug 来保存一些代码。如果预定义了 _ DEBUG 标志,则打印输出。或者假装什么都没发生。
如果我们使用函数实现它,它将如下所示:
void idebug(...)
{
#ifdef _DEBUG
printf(...);
#endif
}
Run Code Online (Sandbox Code Playgroud)
假设有一个程序
int main()
{
int a = 10;
idebug("a:%d\n",a);
}
Run Code Online (Sandbox Code Playgroud)
当我们处于调试阶段时,我们需要编译器的输出:
int main()
{
int a = 10;
printf("a:%d\n",a);
}
Run Code Online (Sandbox Code Playgroud)
如果我们处于发布阶段,我们需要编译器的输出:
int main()
{
int a = 10;
}
Run Code Online (Sandbox Code Playgroud)
Jar*_*d42 10
用另一种方式做:
#ifdef _DEBUG
# define idebug(...) printf(__VA_ARGS__)
#else
# define idebug(...) ((void)0)
#endif
Run Code Online (Sandbox Code Playgroud)