8.1.5 프로그램 사전조건
C와 같은 표준 언어로 프로그래밍하는 중요한 이유는 이식성을 보장해야 하기 때문이다. 실행 플랫폼에 특화된 부분을 최소화하고, 이런 부분은 C 컴파일러와 라이브러리에게 맡기도록 작성해야 한다. 부득이 그렇게 하지 못할 때는 코드의 사전조건(precondition)으로 명확히 표현한다.
TAKEAWAY 8.5 실행 플랫폼에 대한 사전조건을 충족하지 못하면 즉시 컴파일을 멈춘다.
사전조건을 명시하기 위한 전통적인 도구로 앞에서 본 전처리기 조건문(preprocessor conditional)C이 있다.
#if !__STDC_LIB_EXT1__ # error "이 코드는 부록 K의 경계값 검사 인터페이스를 사용해야 한다." #endif
여기서 볼 수 있듯이 전처리기 조건문은 #if란 토큰 시퀀스 문장으로 시작해서 #endif란 문장으로 끝난다. 중간에 나오는 #error 디렉티브는 특정한 조건(여기서는 !__STDC_LIB_EXT1__)을 만족할 때만 실행된다. 즉, 이 경우엔 오류 메시지를 출력하고 컴파일을 멈춘다. 여기에 적을 수 있는 조건문의 종류는 제한돼 있다.Exs 2
Exs 2 int 값에 2의 보수 부호 표현을 담고 있는지 확인하는 전처리기 조건문을 작성해 보자.