c++ 질문 드립니다.(__)

안녕하세요. 저번 질문으로 많은 도움 받고 궁금한게 또 생겨서 질문 드립니다.

c++ 코드를 보면 #if라고 써서 1, 0 이런식으로 된 코드도 있던데 어떤 역할을 하는 건가요?

그리고 #endif는 어떨때 사용이 되는 건가요?

#if #elif #endif

이렇게 선언 되어있으면 if나 elif를 거치고 마지막에 무조건 endif를 거치는 건가요?

1답변

  • 좋아요

    1

    싫어요
    채택취소하기

    C/C++에서 # 으로 시작하는 구문은 전처리기에서 처리하는 매크로 구분입니다. 그중에서 #if문은 조건문으로 #endif와 쌍을 이룹니다.

    #if는 분기문 시작이고, #endif는 if의 종료를 나타냅니다.

    #if [매크로 수식]
    #endif
    

    else구문을 쓰고 싶다면 #if#endif 사이에 #else를 써주면 됩니다.

    #if [매크로 수식]
    // 컴파일시 `매크로 수식`이 참이면 이 부분을 포함하여 컴파일합니다.
    #else 
    // 컴파일시 `매크로 수식`이 거짓이면 이부분을 포함하여 컴파일 합니다.
    #endif
    

    만약 여러개의 조건으로 분기하려면 #elif를 사용하여 다음과 같이 할 수 있습니다.

    #if [매크로 수식 1]
    #elif [매크로 수식 2]
    #elif [매크로 수식 3]
    #elif [매크로 수식 ...]
    #else
    #endif
    
    • 아 맞다. #if~#endif 알고 있었는데 정확히 머리속에 없어서 헷갈렸네요. #endif 아래에도 코딩이 있다보니 endif도 try-catch-final 같은 건줄 알았네요. ㅎㅎ. 그러면 그 #if 1 하고 코딩 된거랑 #if 0 이렇게 코딩된거는 어떨때 사용하는 건가요? 그냥 단순히 1인 문장은 실행하고 0이면 주석처리하듯 실행 안하고 이차이 인가요? ToTo 2016.10.4 13:05
    • 네, 특정 구문을 컴파일 시 포함하거나 제외하고자할 때 그렇게 하기도 합니다. 보통은 #if DEBUG 와 같이 주고, 컴파일시 옵션에서 DEBUG에 대한 매크로 값을 1로 주거나 0으로(혹은 선언하거나 선언하지 않는것으로 구분해서), 소스 코드 수정 없이 특정 코드를 포함(혹은제외)할지를 결정하고자 할 때 사용합니다. 허대영(Daeyoung Heo) 2016.10.4 13:23
    • 답변 주셔서 감사합니다 ^^. 오늘도 이렇게 한수 배워 가네요 고맙습니다. ToTo 2016.10.4 13:35

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.