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


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

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

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

#if #elif #endif

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

  • 2016년 10월 04일에 작성됨

조회수 143


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
  • 2016년 10월 04일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

  • 아 맞다. #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     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close