선행처리기(Preprocess)

✒️ 2025-05-15 15:52 내용 수정

수제비 2024 정보처리기사 필기 5판 1권의 내용을 정리
TCPSchool의 내용을 정리


실행 파일을 생성하는 과정에서 소스 파일 내에 존재하는 선행 처리 지시문을 처리하는 작업

#include
#include int(x)
#include // 선행 처리문
int test()
{
	// 함수
}

#define // 이 선행 처리문은 이 부분부터 아래

선행처리 지시자

지시자 설명
#include 외부에 선언된 함수나 상수 등을 사용하기 위해 외부 파일을 현재 파일에 포함할 때 사용
#define 함수나 상수를 단순화해주는 매크로를 정의할 때 사용
#undef #define 지시자로 이미 정의된 매크로를 삭제할 때 사용
#line __LINE__ 매크로와 __FILE__ 매크로를 재정의할 때 사용
#error 지정한 오류 메시지를 출력하고, 컴파일 과정을 중단할 때 사용
#pragma 프로그램의 이식성을 위해 운영체제별로 달라지는 지시사항을 컴파일러에 전달할 때 사용
#if, #ifdef, #ifndef, #elif, #else, #endif 조건부 컴파일 지시자
  1. #include : 외부에 선언된 함수나 상수 등을 사용하기 위해 외부 파일을 현재 파일에 포함할 때 사용한다.
    • Java나 Python 등의 import 문과 비슷한 역할이다.
    • 선행처리기는 #include 뒤에 나오는 파일 이름을 보고 해당 파일을 찾아 현재 파일에 그 내용을 포함해준다.
#include <stdio.h> // 표준 헤더 파일
#include "test.h" // 사용자 지정 헤더 파일
  1. #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