본문 바로가기

BackEnd/C

전처리기(Preprocessor)와 매크로

반응형

1. 전처리란? 


전처리는 선행처리를 의미한다. 여기서 말하는 ‘선행’이란,컴파일 이전을 의미한다. 즉 소스코드


는 컴파일러에 의해서 컴파일 되기 이전에, 선행처리기라는 것에 의해서 선행처리 과정을 거치게 


된다. 



2. 선행처리기가 하는 일은?


선행처리기가 하는 일은 삽입해놓은 선행처리 명령문대로 소스코드의 일부를 수정할 뿐인데


여기서 말하는 수정이란, 단순 치환의 형태를 띠는 경우가 대부분이다.


예를 들어보겠다. 다음은 가장 간단한 선행처리 명령문이다.


#define PI 3.14


이처럼 선행처리 명령문은 # 문자로 시작을 하며, 컴파일러가 아닌 선행처리기에 의해서 처리되는 


문장이기 때문에 명령어의 끝에 세미콜론을 붙이지 않는다. 그리고 이렇게 구성이 된 명령문은 선


행처리기에게 다음과 같은 메시지를 전달한다. 


PI 를 만나면 3.14로 치환하여라”. 따라서 위의 명령문이 삽입되어 있는 소스코드는 선행처리 과정


에서 다음과 같은 방식으로 변환이 된다. 




그리고 선행처리 과정을 거쳐도 소스파일의 형태가 그대로 유지되기 때문에 여전히 소스파일일 뿐


이다. 참고로  자주 선언해왔던 #include〈stdio.h〉도 # 문자로 시작하기 때문에, 선행처리 명령문임


을 알 수 있다. 이는 다음과 같은 의미를 지닌다. 


stdio.h 파일의 내용을 이곳에 가져다 놓으세요.”


따라서 직접 stdio.h 파일을 열어서 그 안에 있는 내용을 옮겨놓아도 같은 효과를 기대할 수 있다.


매크로에 대해서는 다음글 "대표적인 선행처리 명령문"에서 자세히 봐보자.

반응형