如何在 #ifdef 中添加一个 "或" 条件

227

我该如何在 #ifdef 中添加 'or' 条件?

我尝试过:

#ifdef CONDITION1 || CONDITION2

#endif

这不起作用。

4个回答

419
#if defined(CONDITION1) || defined(CONDITION2)
应该可以工作。 :)
#ifdef 输入更少的字符,但在处理更复杂的条件时效果不佳。

6
这段代码的意思是:如果条件1或条件2已定义,则执行以下操作。 - jalf
3
如何在多个条件下使用 #ifndef? - user3017748
20
@if !defined(CONDITION1) || !defined(CONDITION2) 如果未定义条件1或条件2,就执行以下操作。 - jalf
8
如果你想在两个条件都没有被定义的情况下执行某些操作,那么可以使用AND:#if !defined(CONDITION1) && !defined(CONDITION2)。但是,如果你想在两个条件其中之一未被定义时执行操作,可以使用@user3017748和jalf的评论中提到的方法。请注意,翻译尽力保留原意,使内容更加易懂,并省略了其他内容。 - cp.engr
1
这里不需要 #endif 吗? - Stevoisiak
显示剩余2条评论

52

可以使用这个-

#if defined CONDITION1 || defined CONDITION2
//your code here
#endif

这也是同样的效果-

#if defined(CONDITION1) || defined(CONDITION2)
//your code here
#endif

更进一步:

  • AND(与): #if defined CONDITION1 && defined CONDITION2
  • XOR(异或): #if defined CONDITION1 ^ defined CONDITION2
  • AND NOT(与非): #if defined CONDITION1 && !defined CONDITION2

1

请检查:

    #if defined __WINDOWS__ && ( _MSC_VER >= 1700 )
        enum class FUTURES_DS_STAGE{
            ...
        };
    #else
        enum FUTURES_DS_STAGE{
        ...
        };
    #endif

3
这并没有真正回答问题“如何在#ifdef中添加一个'或'条件?”请避免仅提供代码的答案,特别是如果您试图间接回答问题。 - user694733

-7

我非常注重保持严格的列限制,不喜欢使用“\”进行换行,因为你不能在其后添加注释,所以这是我的方法。

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#ifdef  CONDITION_01             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef  CONDITION_02             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef  CONDITION_03             //|       |//
#define             TEMP_MACRO   //|       |//
#endif                           //|       |//
#ifdef              TEMP_MACRO   //|       |//
//|-  --  --  --  --  --  --  --  --  --  -|//

printf("[IF_CONDITION:(1|2|3)]\n");

//|-  --  --  --  --  --  --  --  --  --  -|//
#endif                           //|       |//
#undef              TEMP_MACRO   //|       |//
//|________________________________________|//

5
哦,那真讨厌... - Puddle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接