views:

54

answers:

3

I want 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?

+1  A: 

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.

James McNellis
A: 

No, use a static variable to store the value of DEFINED_X.

Pierre-Antoine LaFayette
+1  A: 

#define and #undef occur before your source code even hits the compiler. Anything to do with #defines can't happen at runtime.

You should check out the Boost preprocessor library, too.

DeadMG