Can I use #undef this way?
I want开发者_C百科 to get some settings I store in the registry, and if they differ from a #define
I want to redefine it, could I do it this way?:
#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
}
}
I tought #define
was used only when compiling, would this code work when running the compiled exe?
No. #define
and #undef
are preprocessing directives; they are evaluated before the source code is compiled.
You need to use a variable for this, not a macro.
#define
and #undef
occur before your source code even hits the compiler. Anything to do with #define
s can't happen at runtime.
You should check out the Boost preprocessor library, too.
No, use a static variable to store the value of DEFINED_X.
精彩评论