Cara menambahkan kondisi 'atau' di #ifdef


166

Bagaimana saya bisa menambahkan kondisi 'atau' di #ifdef?

Saya telah mencoba:

#ifdef CONDITION1 || CONDITION2

#endif

Ini tidak bekerja.

Jawaban:


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

harus bekerja. :)

#ifdef mengetik agak kurang, tetapi tidak bekerja dengan baik dengan kondisi yang lebih kompleks


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

2
bagaimana cara menggunakan #ifndef dengan berbagai kondisi?
user3017748

18
@ user3017748 #jika ditentukan! (KONDISI1) || ! defined (CONDITION2)
jalf

4
@ user3017748, komentar jalf berfungsi jika Anda menginginkan sesuatu terjadi jika salah satu dari kedua kondisi tersebut tidak didefinisikan. Jika Anda ingin hal itu terjadi jika tak satu pun dari mereka didefinisikan , Anda akan menggunakan AND: #if !defined(CONDITION1) && !defined(CONDITION2).
cp.engr

1
Apakah ini tidak perlu #endif?
Stevoisiak

18

Dapat menggunakan ini-

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

Ini juga melakukan hal yang sama-

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

Lebih lanjut-

  • DAN: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • DAN TIDAK: #if defined CONDITION1 && !defined CONDITION2

-1

Saya benar-benar OCD tentang mempertahankan batas kolom yang ketat , dan bukan penggemar kelanjutan baris "\" karena Anda tidak dapat memberikan komentar setelahnya, jadi inilah metode saya.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.