2013-02-09 2 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

+0

О, это так просто? По какой-то причине я пытался сделать это с #ifdef внутри #define. Я не понимаю, почему это уродливо. Я имею в виду, что ему нужно все время писать всю вещь? – BringMeAnother

+0

@ delnan Я согласен. Если вы задаетесь вопросом, достаточно ли времени в мире C, вы увидите более уродливые вещи. Это довольно мощно, хотя; может делать много всего, что только C++. – texasbruce

Смежные вопросы