2010-05-27 114 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预处理器库。