2013-02-09 57 views
1

例如,如果我有这样的代码:我可以创建一个宏来执行调试或发布代码吗?

#ifdef _DEBUG 
    mPluginsCfg = "plugins_d.cfg"; 
#else 
    mPluginsCfg = "plugins.cfg"; 
#endif 

我可以定义一个宏,看起来像

#define DEBUG_RELEASE(debug_code, release_code) 

,然后用它像这样;

DEBUG_RELEASE(mPluginsCfg = "plugins_d.cfg";,mPluginsCfg = "plugins.cfg";) 

回答

1

我敢肯定,它的作品,我几乎确保它是定义工作。

#ifdef _DEBUG 
#define DEBUG_RELEASE(d,r) d 
#else 
#define DEBUG_RELEASE(d,r) r 
#endif 

我不确定在预处理器宏的美妙世界中是否看到过任何丑陋的东西。

+0

如果你还没有看到任何丑陋的东西,你还没有看到人们用宏做出的更疯狂的事情。但是,是的,至少在像OP一样使用它时,这相当难看。 – delnan 2013-02-09 21:57:44

+0

哦,就这么简单?出于某种原因,我试图在#define中使用#ifdef来做到这一点。我不明白为什么这是丑陋的寿。我的意思是它击败了每次都不写完整的东西? – BringMeAnother 2013-02-09 21:59:13

+0

@delnan我同意。如果你想在C世界有足够的时间,你会看到更多丑陋的东西。虽然它非常强大,可以做许多只有C++才有的功能。 – texasbruce 2013-02-09 22:00:28

相关问题