代码之家  ›  专栏  ›  技术社区  ›  MOHAMED

将宏函数定义为(0)是什么意思?

  •  -2
  • MOHAMED  · 技术社区  · 8 年前

    #define somemacro(a,b,c) (0)
    

    我在相同的源代码中看到:

    #define anothermacro(a,b,c) (1)
    

    1 回复  |  直到 8 年前
        1
  •  2
  •   SKi    8 年前

    函数(如宏)的非使用参数通常出现在以下情况:

    #ifdef A_IS_GREAT_ALWAYS
      #define anothermacro(a,b,c) (1)
    #else
      #define anothermacro(a,b,c) ((a)>(b)+(c))
    #endif
    

    ...
    if (anothermacro(foo, bar, baz))
    ...
    

    预编译器将示例代码转换为:

      if ((1))
    

    或

      if (((foo)>(bar)+(baz)))
    

    这取决于你是否总是被定义为伟大的。