如何在#ifdef中添加“或”条件


166

如何在#ifdef中添加“或”条件?

我努力了:

#ifdef CONDITION1 || CONDITION2

#endif

这是行不通的。

Answers:


317
#if defined(CONDITION1) || defined(CONDITION2)

应该管用。:)

#ifdef 打字少了一点,但不适用于更复杂的条件


5
@iEngineer #elif defined(CONDITION1) || defined(CONDITION2)吗?
2015年

2
如何在多个条件下使用#ifndef?
user3017748 '16

18
@ user3017748 #if!defined(CONDITION1)|| !defined(CONDITION2)
2016年

4
如果你想,如果发生什么@ user3017748,jalf的评论作品要么两个条件都没有定义。如果你想,如果这样的情况发生都没有定义,你会使用AND: #if !defined(CONDITION1) && !defined(CONDITION2)
cp.engr

1
不需要#endif吗?
Stevoisiak

18

可以使用这个-

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

这也一样

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

进一步-

  • 和: #if defined CONDITION1 && defined CONDITION2
  • 异或: #if defined CONDITION1 ^ defined CONDITION2
  • 并不是: #if defined CONDITION1 && !defined CONDITION2

-1

我真的是OCD关于维持严格的列限制,而不是拥护“ \”行继续,因为您不能在其后加上注释,所以这是我的方法。

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.