#İfdef içine 'veya' koşulu nasıl eklenir


167

# İfdef'e 'veya' koşulunu nasıl ekleyebilirim?

Denedim:

#ifdef CONDITION1 || CONDITION2

#endif

Bu çalışmıyor.

Yanıtlar:


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

çalışmalı. :)

#ifdef biraz daha az yazıyor, ancak daha karmaşık koşullarla iyi çalışmıyor


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

2
#ifndef birden çok koşulda nasıl kullanılır?
user3017748

18
@ user3017748 #if! tanımlı (CONDITION1) || ! tanımlı (CONDITION2)
jalf

4
Eğer varsa bir şey olmasını istiyorsanız @ user3017748, jalf 'in yorumları çalışır ya iki durumlardan edilir değil tanımlanmış. Eğer varsa gerçekleşmesi istiyorsanız ikisinin de tanımlanmıştır , AND kullanmayı tercih ediyorum: #if !defined(CONDITION1) && !defined(CONDITION2).
cp.engr

1
Bunun bir ihtiyacı yok mu #endif?
Stevoisiak

19

Bunu kullanabilir-

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

Bu aynı şeyi yapıyor-

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

Daha ileri-

  • VE: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • VE YOK: #if defined CONDITION1 && !defined CONDITION2

-1

Ben gerçekten sıkı sütun sınırlarını korumak konusunda OKB ve "\" satır devam hayranı değil çünkü ondan sonra bir yorum koyamazsınız, bu yüzden burada benim yöntem.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.