2010-05-27 84 views
0

我想一些我的設置存儲在註冊表中,如果他們從#define我想重新定義不同,我可以做到這樣?:我可以這樣使用#undef嗎?

#define DEFINED_X "testSetting" 

void LoadConfig() 
{ 
    regConfigX = some value previusly stored in the registry; 
    if(regConfigX!=DEFINED_X) 
    { 
     #undef DEFINED_X 
     #define DEFINED_X regConfigX 
    } 
} 

我因子評分#define只用在編譯時,運行編譯後的exe文件時這個代碼能工作嗎?

回答

0

不,請使用靜態變量來存儲DEFINED_X的值。

1

No. #define#undef預處理指令;在源代碼編譯之前對它們進行評估。

您需要爲此使用變量,而不是宏。

1

#define#undef發生在您的源代碼甚至碰到編譯器之前。任何與#define有關的事情都不能在運行時發生。

您也應該查看Boost預處理器庫。