**전처리기(Preprocessor)**는 실제 컴파일러가 C 코드를 기계어로 번역하기 직전에, 소스 코드를 미리 재구성하고 정돈하는 사전 처리 도구입니다.
1. 대표적인 전처리기 지시자
#include <header.h>: 표준 라이브러리 헤더 파일을 가져옵니다.#include "myheader.h": 사용자가 직접 작성한 헤더 파일을 가져옵니다.#define 상수이름 값: 매크로 상수를 정의합니다.#define SQUARE(x) ((x)*(x)): 매크로 함수를 정의합니다.
2. 매크로 상수의 활용
#include <stdio.h>
#define PI 3.141592
#define MAX_SIZE 100
int main(void) {
double radius = 5.0;
double area = PI * radius * radius;
printf("원 넓이: %.2f\n", area);
return 0;
}
3. 헤더 파일 중복 포함 방지 (Include Guard)
다중 파일 프로젝트에서 동일한 헤더 파일이 여러 번 선언되어 발생하는 중복 정의 오류를 막기 위해 Include Guard 구문을 사용합니다.
#ifndef MY_HEADER_H
#define MY_HEADER_H
// 구조체 선언 및 함수 원형 선언들
void myFunction(void);
#endif
4. 자주 묻는 질문 (Q&A)
Q. 매크로 함수와 일반 함수의 차이는 무엇인가요? A. 일반 함수는 호출 시 스택 메모리를 사용해 오버헤드가 발생하지만, 매크로 함수는 컴파일 전에 코드 자체가 그 자리에 그대로 치환(확장)되므로 속도가 매우 빠릅니다. 단, 복잡한 인자 전달 시 괄호 미사용으로 인한 계산 오류가 발생하기 쉽습니다.