代码之家  ›  专栏  ›  技术社区  ›  RobertS supports Monica Cellio

如何使用C语法在一行中重新定义宏常量?

  •  -1
  • RobertS supports Monica Cellio  · 技术社区  · 6 年前

    我想在我的C源代码中,在特定条件下重新定义宏常量的值。我不能使用条件预处理指令来定义 LEN_OSG

    if(condition)                      // proof condition for replacing the value in LEN_OSG.
    {
       if(LEN_OSG != CBS_LEN)          // check if LEN_OS already has the value in CBS_LEN.
       {
          #undef LEN_OSG               // undefine macro LEN_OSG by using `#undef` directive.
          #define LEN_OSG CBS_LEN      // recreate the macro LEN_OSG with new value.
       }
    }
    

    #undef 指令,然后由另一个指令使用新值重新创建宏 #define 指令(仅在一行中)?


    理想的解决方案如下:

    if(LEN_OSG != CBS_LEN)          // check if LEN_OS already has the value in CBS_LEN.
    {
       #redefine LEN_OSG CBS_LEN    // redefine LEN_OS with another value in one line. 
    }
    
    2 回复  |  直到 6 年前
        1
  •  5
  •   VLL Mohamed El-Nakeep    6 年前

    您的代码没有按预期工作。 #define 在编译时执行,因此必须使用编译时 #if

    而且,没有 #redefine ,因此需要两个命令。

        2
  •  3
  •   Yunnosch    6 年前

    您正在尝试将运行时代码执行与预处理器指令相混合,即甚至在编译之前就有效果的东西。