c++ 질문 드립니다.(__)
조회수 1505회
안녕하세요. 저번 질문으로 많은 도움 받고 궁금한게 또 생겨서 질문 드립니다.
c++ 코드를 보면 #if라고 써서 1, 0 이런식으로 된 코드도 있던데 어떤 역할을 하는 건가요?
그리고 #endif는 어떨때 사용이 되는 건가요?
#if #elif #endif
이렇게 선언 되어있으면 if나 elif를 거치고 마지막에 무조건 endif를 거치는 건가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
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이면 주석처리하듯 실행 안하고 이차이 인가요? 알 수 없는 사용자 2016.10.4 13:05
- 네, 특정 구문을 컴파일 시 포함하거나 제외하고자할 때 그렇게 하기도 합니다. 보통은 #if DEBUG 와 같이 주고, 컴파일시 옵션에서 DEBUG에 대한 매크로 값을 1로 주거나 0으로(혹은 선언하거나 선언하지 않는것으로 구분해서), 소스 코드 수정 없이 특정 코드를 포함(혹은제외)할지를 결정하고자 할 때 사용합니다. 허대영(소프트웨어융합대학) 2016.10.4 13:23
- 답변 주셔서 감사합니다 ^^. 오늘도 이렇게 한수 배워 가네요 고맙습니다. 알 수 없는 사용자 2016.10.4 13:35
댓글 입력