开发者

Can I use #undef this way?

开发者 https://www.devze.com 2023-01-01 22:02 出处:网络
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?:

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 #defines 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.

0

精彩评论

暂无评论...
验证码 换一张
取 消