(1) 전처리 과정
: 전처리 과정은 크게 두 부분으로 나눌 수 있다.

○ 첫번째 : 헤더 파일의 삽입
○ 두번째 : 매크로 치환 및 적용


(2) 헤더 파일의 삽입
: 헤더파일을 C 소스 내에 include 하면 전처리기가 include한 자리에 헤더 파일의 내용을 붙인다.

- 소스파일 내에 #include<stdio.h>를 만나면
  : 시스템 헤더 파일 디렉토리로 등록된 /usr/local/include/ , /usr/lib/gcc-lib/i386-edhatlinux/3.2.2/include/,
     /usr/include 디렉토리 순서로 stdio.h 파일이 있는지 찾는다.
  : 이런 기본 탐색 include 디렉토리를 추가하기 위해 gcc 옵션으로 -I[include 디렉토리] 형식으로 붙이면 -I 뒤에 오는
    include 디렉토리를 먼저 탐색하게 할 수 있다. (ex) gcc -I/root/include -o like like.c

- 헤더파일을 붙이는 중간에 파일 내에 기술된 #include<features.h>를 만나면
  : cc1 -E는 stdio.h를 붙이는 것을 잠시 중단하고 다시 include 디렉토리를 돌면서 features.h 파일을 찾아 붙여 넣고,
    stdio.h 파일의 나머지 부분을 붙여넣는다.


(3) 치환
: #define된 부분은 cc1 -E의 심볼 테이블에 저장되고 심볼 테이블에 들어있는 문자열과 같은 문자열을 만나면 #define된
  내용으로 치환.


- #ifdef와 같이 소스를 선택적으로 추가, 제거하는 매크로들도 처리된다.

by 민트앤라떼 2011. 10. 14. 16:40