“ #ifdef”在宏内 [英] "#ifdef" inside a macro

查看:66
本文介绍了“ #ifdef”在宏内的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能重复:

#ifdef in #define

如何使用字符#成功在宏内?当我做这样的事情时,它会尖叫:

How do I use the character "#" successfully inside a Macro? It screams when I do something like that:

#define DO(WHAT)        \
#ifdef DEBUG        \                           
  MyObj->WHAT()         \       
#endif              \


推荐答案

您不能那样做。您必须执行以下操作:

You can't do that. You have to do something like this:

#ifdef DEBUG
#define DO(WHAT) MyObj->WHAT()
#else
#define DO(WHAT) do { } while(0)
#endif

do {} while(0)避免空语句。例如,请参见此问题

The do { } while(0) avoids empty statements. See this question, for example.

这篇关于“ #ifdef”在宏内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆