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