선행처리기(Preprocess)
✒️ 2025-05-15 15:52 내용 수정
수제비 2024 정보처리기사 필기 5판 1권의 내용을 정리
TCPSchool의 내용을 정리
실행 파일을 생성하는 과정에서 소스 파일 내에 존재하는 선행 처리 지시문을 처리하는 작업
-
컴파일러가 컴파일을 수행하기 전에 소스를 재구성하는 작업이다.
- C 언어#실행 파일 생성 순서 참고.
-
선행처리문은 선행 처리 문자
#로 시작하고, C 코드와 달리 뒤에 세미콜론;을 붙이지 않는다.
#include
- 코드 내에서 하나의 라인을 모두 차지하며, 선행처리문 뒤에 C 코드를 추가하여 같이 사용할 수 없다.
- 주석은 같은 라인의 선행처리문 뒤에 위치할 수 있다.
#include int(x)
#include // 선행 처리문
- 소스 파일 어디에나 위치할 수 있지만, 선행처리문이 위치한 곳에서부터 파일 끝까지만 영향을 미친다.
int test()
{
// 함수
}
#define // 이 선행 처리문은 이 부분부터 아래
선행처리 지시자
| 지시자 | 설명 |
|---|---|
#include |
외부에 선언된 함수나 상수 등을 사용하기 위해 외부 파일을 현재 파일에 포함할 때 사용 |
#define |
함수나 상수를 단순화해주는 매크로를 정의할 때 사용 |
#undef |
#define 지시자로 이미 정의된 매크로를 삭제할 때 사용 |
#line |
__LINE__ 매크로와 __FILE__ 매크로를 재정의할 때 사용 |
#error |
지정한 오류 메시지를 출력하고, 컴파일 과정을 중단할 때 사용 |
#pragma |
프로그램의 이식성을 위해 운영체제별로 달라지는 지시사항을 컴파일러에 전달할 때 사용 |
#if, #ifdef, #ifndef, #elif, #else, #endif |
조건부 컴파일 지시자 |
#include: 외부에 선언된 함수나 상수 등을 사용하기 위해 외부 파일을 현재 파일에 포함할 때 사용한다.- Java나 Python 등의
import문과 비슷한 역할이다. - 선행처리기는
#include뒤에 나오는 파일 이름을 보고 해당 파일을 찾아 현재 파일에 그 내용을 포함해준다.
- Java나 Python 등의
#include <stdio.h> // 표준 헤더 파일
#include "test.h" // 사용자 지정 헤더 파일
#define: 함수나 상수를 단순화해주는 매크로를 정의할 때 사용한다.- 매크로로 함수나 상수에 이름을 붙여줌으로써 코드의 가독성을 올려준다.
- 선행처리기는 선행처리 지시문의 식별자(identifier)를 대체 리스트(replacement-list)로 치환하는 매크로 확장을 수행한다.
#define identifier replacement-list
#include <stdio.h>
#define PI 3.14
int main(void)
{
double radius = 5;
printf("반지름이 %f인 원의 넓이 : %.2f\n", radius, PI*radius*radius);
return 0;
}
반지름이 5.00인 원의 넓이 : 78.50