Cách thêm điều kiện 'hoặc' trong #ifdef


166

Làm cách nào tôi có thể thêm điều kiện 'hoặc' trong #ifdef?

Tôi đã thử:

#ifdef CONDITION1 || CONDITION2

#endif

Điều này không hoạt động.

Câu trả lời:


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

nên làm việc. :)

#ifdef ít gõ hơn một chút, nhưng không hoạt động tốt với các điều kiện phức tạp hơn


5
@iEngineer #elif defined(CONDITION1) || defined(CONDITION2)?
jalf

2
Làm thế nào để sử dụng #ifndef với nhiều điều kiện?
dùng4957748

18
@ user4957748 #if! đã xác định (ĐIỀU KIỆN1) || ! định nghĩa (CONDITION2)
jalf

4
@ user4957748, bình luận của jalf hoạt động nếu bạn muốn điều gì đó xảy ra nếu một trong hai điều kiện không được xác định. Nếu bạn muốn điều đó xảy ra nếu cả hai không được xác định , bạn sẽ sử dụng AND : #if !defined(CONDITION1) && !defined(CONDITION2).
cp.engr

1
Điều này không cần một #endif?
Stevoisiak

18

Có thể sử dụng cái này-

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

Điều này cũng làm như vậy-

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

Thêm nữa-

  • VÀ: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • VÀ KHÔNG: #if defined CONDITION1 && !defined CONDITION2

-1

Tôi thực sự OCD về việc duy trì các giới hạn cột nghiêm ngặt và không phải là người hâm mộ tiếp tục dòng "\" vì bạn không thể đưa ra nhận xét sau đó, vì vậy đây là phương pháp của tôi.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.