#ifdefに「or」条件を追加する方法


166

#ifdefに「or」条件を追加するにはどうすればよいですか?

私が試してみました:

#ifdef CONDITION1 || CONDITION2

#endif

これは動作しません。

回答:


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

うまくいくはずです。:)

#ifdef タイピングは少し少なくなりますが、より複雑な条件ではうまく機能しません


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

2
複数の条件で#ifndefを使用する方法?
user3017748

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

4
@ user3017748、jalfのコメントは、2つの条件のいずれかが定義されていない場合に何かを実行したい場合に機能します。どちらも定義されていない場合に発生させるには、AND:を使用します#if !defined(CONDITION1) && !defined(CONDITION2)
cp.engr 2017

1
これは必要ありません#endifか?
Stevoisiak 2017

18

これを使用できます

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

これも同じです-

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

さらに-

  • そして: #if defined CONDITION1 && defined CONDITION2
  • XOR: #if defined CONDITION1 ^ defined CONDITION2
  • AND NOT: #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   //|       |//
//|________________________________________|//
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.