개발/C++

[C++] #ifdef에 'or' 조건을 추가하는 방법

MinorMan 2022. 10. 14. 12:39
반응형

<질문>

#ifdef 에 'or' 조건을 추가하려면 어떻게 해야 하나요?

나는 시도했다:

#ifdef CONDITION1 || CONDITION2

#endif

이것은 작동하지 않습니다.


<답변1>

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

작동해야합니다. :)

#ifdef 타이핑이 조금 덜하지만 더 복잡한 조건에서는 잘 작동하지 않습니다.


<답변2>

이것을 사용할 수 있습니다-

#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

<답변3>

이것을 확인하십시오:

    #if defined __WINDOWS__ && ( _MSC_VER >= 1700 )
        enum class FUTURES_DS_STAGE{
            ...
        };
    #else
        enum FUTURES_DS_STAGE{
        ...
        };
    #endif

<답변4>

나는 유지 관리에 대해 정말로 강박적이다.엄격한 열 제한, 그리고 "\"의 팬이 아닙니다. 뒤에 주석을 달 수 없기 때문에 줄 연속을 사용하는 방법은 다음과 같습니다.

//|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|//
#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   //|       |//
//|________________________________________|//
반응형