C 언어 기초
#define DEBUG 0
#ifdef DEBUG
printf("A\n");
#endif
#if DEBUG
printf("B\n");
#endif위의 코드를 main 함수 안에 써서 실행했을 때의 출력으로 올바른 것은?
- AA만 표시된다
- B아무것도 표시되지 않는다
- CA와 B가 표시된다
정답과 해설 보기
정답: A. A만 표시된다
#ifdef DEBUG는 DEBUG라는 매크로가 정의되어 있는지만 조사하며, 값은 보지 않습니다. DEBUG는 값 0으로 정의되어 있으므로 조건은 참이 되고, A를 표시하는 문이 컴파일됩니다. #if DEBUG는 값을 조사하며, 0이므로 거짓이 되어 B를 표시하는 문은 제거됩니다. 디버그용 처리를 전환할 때는 #ifdef와 #if 중 어느 쪽으로 판정할지를 통일해 두지 않으면 이러한 불일치가 일어납니다.