【问题标题】:Can I use #undef this way?我可以这样使用#undef 吗?
【发布时间】:2010-05-27 22:57:15
【问题描述】:

我想获取一些我存储在注册表中的设置,如果它们与#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 时是否有效?

【问题讨论】:

    标签: c++ visual-c++ c-preprocessor


    【解决方案1】:

    没有。 #define#undef预处理指令;在编译源代码之前对它们进行评估。

    您需要为此使用变量,而不是宏。

    【讨论】:

      【解决方案2】:

      #define#undef 在您的源代码到达编译器之前发生。与#defines 相关的任何事情都不能在运行时发生。

      您也应该查看 Boost 预处理器库。

      【讨论】:

        【解决方案3】:

        不,使用静态变量来存储 DEFINED_X 的值。

        【讨论】:

          猜你喜欢
          • 2014-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-03
          • 2020-09-05
          • 1970-01-01
          • 2011-03-11
          • 2013-02-08
          相关资源
          最近更新 更多