我想获得一些我存储在注册表中的设置,如果它们与#define
不同,我想重新定义它,我可以这样做吗?:
#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 :(得分:1)
没有。 #define
和#undef
是预处理指令;在编译源代码之前对它们进行评估。
您需要为此使用变量,而不是宏。
答案 1 :(得分:1)
#define
和#undef
在源代码甚至命中编译器之前发生。与#define
的任何关系都不能在运行时发生。
您也应该查看Boost预处理器库。
答案 2 :(得分:0)
不,使用静态变量来存储DEFINED_X的值。