제 11 장 전처리기
목 차 전처리기의 의미 전처리기의 종류 및 기능
전처리기의 의미 컴파일 전에 문법외적인 사항 처리 메크로 ‘#‘으로 시작되는 명령어 C 언어의 문법과 상관없는 독자적 규칙 사용 메크로 함수와 비슷한 기능 상수의 선언 ‘;’을 사용하지 않음
전처리기 예제 #include <stdio.h> #define CODE 5 main() { int su; #ifdef MODE su=5; #else su=10; #endif printf("\n su = %d", su); }
전처리기의 종류와 기능(1) #include 외부 파일의 병합(포함) “ “ < > 사용자가 작성한 외부 파일 #include “user.h” < > 컴파일러에서 제공하는 파일 #include <stdio.h>
전처리기의 종류와 기능(2) #define 자주 사용하는 상수값, 메크로 정의 상수형 자료 정의 후 해당 자료로 치환 #define MAX 100 char *str[MAX]; 상수형 자료 정의 후 해당 자료로 치환 #define ERRORRN "프로그램 오류 발생“ printf("%s", ERRORPRINT); 프로그램의 내용을 변경 #define PROERROR printf(“오류 발생”) PROERROR;
전처리기의 종류와 기능(3) 시스템 정의 메크로 __FILE__ __TIME__ __DATE__ __LINE__ 현재 처리중인 파일의 이름을 나타내는 문자열 __TIME__ 컴파일 되는 현재 시각을 나타내는 문자열 __DATE__ 컴파일 되는 현재 날짜를 나타내는 문자열 __LINE__ 컴파일 되는 현재 파일의 라인을 정수로 나타냄 __STDC__ 처리시스템이 ANSI C표준일 때는 값이 1
전처리기의 종류와 기능(4) 메크로 정의문 #undef #ifdef #ifndef #define로 정의한 상수 해제 #define MAX 100 #undef MAX #ifdef 메크로의 선언 여부 확인 #ifdef MAX #define MAX 200 #ifndef 메크로의 미선언(if not define) 여부 확인 #ifndef MAX
전처리기의 종류와 기능(5) 조건부 컴파일 시스템(상수)의 상태(값)에 따라 소스코드 변경 O.S에 따른 환경 H/W 사양에 따른 환경 #if~#else~#endif로 구성됨 #define SYSTEM 1 #if Windows98 == 1 #define READ read() #else #define READ() __read() #endif