如何实现这样的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