【问题标题】:Use OR among with #ifdef [duplicate]在#ifdef 中使用 OR [重复]
【发布时间】:2013-07-14 13:08:21
【问题描述】:

我想您可以添加仅在以这种方式同时声明 2 个术语时才会执行的代码:

#ifdef X
#ifdef Y

//code to execute

#endif
#endif

我想知道如果至少声明了 X 或 Y(也可以考虑 xor),是否有办法执行代码,例如:

#ifdef X or #ifdef Y

// code

#endif

?

【问题讨论】:

  • 如果你愿意,可以忽略括号:#if defined X || defined Y,别忘了endif

标签: c++ c


【解决方案1】:

使用defined:

#if defined(X) || defined(Y)

【讨论】:

  • 所以我观察到我什至可以将 ^ 用于异或。
  • 有趣,不知道,谢谢你的发现。
  • @gg.kaspersky 这可能是因为defined(X) 将扩展为整数 1 或 0,因此从技术上讲,任何使用整数类型的运算符都可以在这里工作。您甚至可以使用#if defined(X) + defined(Y) 来获得“或”效果。
【解决方案2】:

你可以像这样使用operator||

#if defined(X) || defined(Y)

【讨论】:

    【解决方案3】:

    你可以这样做:

    #if defined(X) || defined(Y)
    ...
    #endif
    

    【讨论】:

      【解决方案4】:

      你需要说:

      #if defined(X) || defined(Y)
      

      以下两种形式是等价的:

      #ifdef identifier
      #if defined identifier
      

      【讨论】:

        猜你喜欢
        • 2017-12-18
        • 1970-01-01
        • 2011-11-06
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多