실질적인 컴파일 이전에 미리 처리되는 문장을 가리킨다. 선행처리기라고도 한다. 따라서 컴파일러는 사용자가 작성한 코드를 컴파일하기 전에 전처리문에서 정의해 놓은 작업들을 먼저 수행한다.
#pragma once : 헤더 중복 방지 전처리기. #include로 같은 헤더를 몇번 반복해도 한 번만 해준다. 중복 방지 안 하면 같은 클래스가 여러개 정의되는 것이다.
미리컴파일된 헤더(Precompiled Header) 는 자주변경되지 않는 긴소스를 미리 컴파일하여 컴파일결과를 별도의 파일에 저장하여, 다시 똑같은 헤더를 컴파일시 해당파일을 처음부터 컴파일하지않고 미리컴파일된 헤더 파일을 사용해 컴파일 속도를 월등히 향상시켜줍니다.

1. #include
한마디로 코드 치환, 코드 복붙이다. #include <iostream>에서 iostream이라는 파일의 코드를 가져와서 사용할 수 있게 해준다.
(1) #include <> -> 비주얼 스튜디오에 포함 디렉토리에 존재하는 파일을 사용
(2) #include "" -> 파일이 존재하는 폴더의 경로를 사용
헤더 중복 관련
헤더 내에서 불필요한 헤더 include는 피해야 한다. 순환참조나 변수 재정의의 원인이 될 수 있다.
또한 헤더쪽에 구현이 있는 건 문제가 생길 여지가 있기 때문에 최대한 분할해야 한다. 헤더에서 클래스를 사용하면 헤더와 구현의 완전한 분리를 할 수 없다.
순환 참조 주의
#include에서는 순환참조를 주의해야 한다.
A 클래스의 헤더에서 #include "B.h"
B 클래스의 헤더에서 #include "A.h"
→ A를 만들려면 B가 필요하고 B가 먼저 컴파일되면 A가 그걸 사용해야 한다. 그런데 B도 A가 필요하다.
헤더순환참조

컴파일러가 헤더의 내용을 이해를 못해 에러발생
이걸 해결위한게 전방 선언을 사용해 헤더 순환참조 방지
2. Ifdef, Define
(1) Define은 예전에 치환이외에도 전처리문 xxxx를 정의했다.라는 의미가 있습니다.
(2) #ifdef는 xxxx 디파인을 선언했다면.
(3) #else은 선언 안했다면
(4) #endif는 여기가 조건의 마지막

#define, #undef
C++에서 #undef 전처리 지시문을 사용하는 주된 이유는 #define으로 정의된 매크로의 영향 범위를 제한하거나, 매크로를 재정의(redefine)하기 위해서입니다.
#undef는 #define으로 인한 부작용(예기치 않은 이름 치환 등)을 막고 코드의 모듈화와 안전성을 높이기 위해 사용
'C++ 개념 정리' 카테고리의 다른 글
| 12. std::vector (0) | 2026.01.17 |
|---|---|
| 11. 문자열 표준 정리 (0) | 2026.01.11 |
| 9. 스마트 포인터 (0) | 2026.01.11 |
| 8. Enum Vs Enum Class (0) | 2026.01.04 |
| 7. C++ 형변환 (1) | 2026.01.03 |