전처리 단계에 대해서 설명해 보겠다.
전처리 과정의 뜻은 대략적으로 소스코드를 확장된 소스 코드(=트랜스레이션 유닛)로 바꿔주는 과정을 말한다.
이전 글에서도 간단하게 #include 가 어떤 식으로 작동하는지를 보여줬는데
모든 #으로 시작하는 매크로는 아래와 같은 방식으로 작동되니 알고 있으면 될 것 같다.
전처리 과정
- 입력 : C파일 하나
- 주석제거 : C파일에 있는 모든 주석을 제거해 주는 작업을 한다.
- 매크로를 복붙(확장)함
- #으로 시작하는 것들을 매크로라고 하는데, 이 매크로들은 전부다 복붙을 한다고 보면 된다.
- 확장 : (#include "헤더파일")을 지우고 그 자리에 헤더파일 속에 있는 내용을 복사해서 가져다 붙인다.
- 인클루드는 꼭 헤더파일만 하는 것은 아니다 .c 파일도 가능하지만 컴파일을 빠르게 하는 목적으로 목적을 가지고 하는 것임을 알고 인클루드 하자 일단 표준은 헤더파일만 인클루드 하는 것이다 ( 더 궁금하면 '유니티 빌드' 찾아볼 것)
- 복붙과정은 헤더파일 크기 상관없이 하는 것이다. ( 크키가 커도 상관없이 복붙 됨 stdio.h 도 엄청 크기가 크다)
- 출력 : 확장된 소스코드
- 컴파일의 기본단위인 트랜스레이션 유닛(translation unit)이 출력된다.
이렇게 작성하면 .pre파일로 저장이 된다. 복붙과정은 헤더파일 크기가 상관없이 하는 것이라고 말했는데, 궁금하다면 stdio.h 헤더파일을 인클루드 하고 트랜스레이션 유닛을 한번 보면 얼마나 긴 트랜스레이션 유닛이 나오는지 알 수 있다. 2023.01.09 - [POCU/COMP2200(C언어)] - [C]#include 의미 / 자료형 정리 출처 : POCU Academy COMP2200 트랜스레이션 유닛 보는 방법
clang -std=c89 -W -Wall -pedantic-errors -E main.c > main.pre
'C언어 > C언어' 카테고리의 다른 글
[C언어]어셈블(Assemble) 단계 (0) | 2023.02.16 |
---|---|
[C언어]컴파일(Compilation) 단계 (2) | 2023.02.16 |
[C언어]C언어에서 헤더파일이 필요한 이유?(헤더파일 필요성) (0) | 2023.02.16 |
[C언어]C프로그램 빌드 과정(컴파일,링크,빌드의 차이) (0) | 2023.02.15 |
[C언어]인클루드 가드의 뜻과 사용법(헤더가 꼬일 때,업계표준) (0) | 2023.02.15 |
댓글