76.5 연습문제: 조건부 컴파일 사용하기

다음 소스 코드를 완성하여 주민등록번호를 포함한 인적 정보가 출력되게 만드세요.

practice_conditional_compile.c

#include <stdio.h>
_____________________
_____________________

struct Person {
    char name[20];
    int age;
    char address[100];
#if DEBUG_LEVEL >= 2 && defined DEBUG
    char residentRegistrationNumber[15];    // 주민등록번호
#endif
};

int main()
{
    struct Person p1 = {
        "홍길동",
        30,
        "서울시 용산구 한남동",
#if DEBUG_LEVEL >= 2 && defined DEBUG
        "860821-1326821"
#endif
    };

#if DEBUG_LEVEL >= 2 && defined DEBUG
    printf("%s %d %s %s\n", p1.name, p1.age, p1.address, p1.residentRegistrationNumber);
#else
    printf("%s %d %s\n", p1.name, p1.age, p1.address);
#endif

    return 0;
}

실행 결과

홍길동 30 서울시 용산구 한남동 860821-1326821

정답

 #define DEBUG
 #define DEBUG_LEVEL 2

해설

Person 구조체 정의에서 멤버 residentRegistrationNumber, 구조체 변수 p1을 초기화 할 때의 "860821-1326821" 그리고 주민등록번호까지 출력하는 printfDEBUG_LEVEL이 2 이상이면서 DEBUG가 정의되어 있어야 컴파일되도록 만들어져 있습니다. 따라서 #define으로 DEBUG를 정의해주고 DEBUG_LEVEL은 2 이상으로 만들어주면 됩니다.