실행파일은 컴파일과 링크의 과정을 거쳐서 만들어짐
그러나 실제로는 컴파일 이전에 '선행처리'라는 과정을 거치게 됨
선행처리는 컴파일 이전의 처리를 의미
선행처리는 선행처리기에 의해서,
컴파일은 컴파일러에 의해서
링크는 링커에 의해서
진행
컴파일 이전에 선행처리의 과정을 거친다는 점을 주목
컴파일 과정을 거치게 되면 바이너리 데이터로 이루어진 오브젝트 파일이 생성
선행처리의 과정을 거쳐서 생성되는 파일도 그냥 소스파일. 소스파일의 형태가 그대로 유지되기 때문.
선행처리기는, 사용자가 삽입해 놓은 섢애처리 명령문대로 소스코드의 일부를 수정할 뿐인데, 여기서 말하는 수정이란,
단순 치환의 형태로 띠는 경우가 대부분.
예시
#define PI 3.14 // 선행처리 명령문
선행처리 명령문은 # 문자로 시작을 하며, 컴파일러가 아닌 선행처리기에서 처리되는 문자이기 때문에 명령문의 끝에 세미콜론을 붙이지 않는다.
이렇게 구성이 된 명령문은 선행처리기에게 아래의 메세지 전달
"PI를 만나면 인정사정 볼 것 없이 3.14로 치환"
'선행처리', 컴파일 이전의 처리.
따라서 소스파일은 컴파일러에 의해 컴파일 되기 이전에, 선행처리기에 의해서 선행처리의 과정을 거치게 된다.
참고
#include <stdio.h>도 # 문자로 시작하는 선행처리 명령문.
"stdio.h 파일의 내용을 이곳에 가져다 놓아라"
참고 : [윤성우 열혈 C 프로그래밍] - 대부분의 내용 및 코드는 이 책에서 개인 공부 정리 목적으로 참고하였습니다.
'Language&Framework&Etc > C' 카테고리의 다른 글
매크로와 선행처리기(26-3) 조건부 컴파일(Conditional Compilation)을 위한 매크로 (0) | 2020.12.18 |
---|---|
매크로와 선행처리기(26-2) 대표적인 선행처리 명령문 (0) | 2020.12.17 |
메모리 관리와 메모리의 동적 할당(25-2) 메모리의 동적 할당 (0) | 2020.12.17 |
메모리 관리와 메모리의 동적 할당(25-1) C언어의 메모리 구조 (0) | 2020.12.17 |
파일 입출력(24-5) 임의 접근을 위한 '파일 위치 지시자'의 이동 (0) | 2020.12.17 |