C 언어와 C++에서 #include는 소스 코드 파일의 가장 윗부분에서 흔히 볼 수 있는 전처리기 지시자(Preprocessor Directive)입니다.
1. #include의 핵심 역할
#include는 한마디로 “복사해서 붙여넣기”입니다.
컴파일러가 실제 코드를 번역하기 전(전처리 단계), 지정한 파일의 내용을 #include 문장이 있는 그 자리에 통째로 가져와서 삽입합니다.

2. 사용법에 따른 차이 ( < > vs " " )
#include를 사용할 때 괄호의 모양에 따라 파일을 찾는 위치가 달라집니다.
① < > (꺽쇠 괄호)
- 사용 예:
#include <stdio.h> - 설명: 시스템의 표준 라이브러리 경로에서 파일을 찾습니다.
- 대상: 컴파일러 설치 시 기본적으로 제공되는 표준 헤더 파일들을 불러올 때 사용합니다.
② " " (큰따옴표)
- 사용 예:
#include "my_header.h" - 설명: 현재 작업 중인 디렉토리(소스 파일이 있는 곳)에서 먼저 파일을 찾습니다. 만약 거기서 못 찾으면 시스템 표준 경로를 뒤집니다.
- 대상: 개발자가 직접 만든 헤더 파일을 불러올 때 주로 사용합니다.
3. 왜 헤더 파일을 포함해야 할까?
printf나 scanf 같은 함수를 쓸 수 있는 이유는 그 함수들의 선언(Declaration)이 stdio.h라는 파일 안에 들어있기 때문입니다.
- 컴파일러는 함수를 만나면 “이 함수가 어떻게 생겼는지(매개변수, 반환 타입 등)”를 알아야 합니다.
- 직접 모든 함수를 정의하기엔 양이 너무 많으므로, 미리 정의된 헤더 파일을
#include로 불러와서 정보를 제공하는 것입니다.
4. 주의사항: 중복 포함 방지
대규모 프로젝트에서는 여러 파일이 서로를 참조하다가 똑같은 헤더 파일을 여러 번 #include 하는 상황이 발생할 수 있습니다.
이는 정의 중복 에러를 일으키므로, 보통 다음과 같은 기법을 사용합니다.
- Header Guard:C
#ifndef MY_HEADER_H #define MY_HEADER_H // 코드 내용 #endif - pragma once:C
#pragma once // 코드 내용
#ifndef MY_HEADER_H #define MY_HEADER_H /* 헤더 파일 내용 */ void say_hello(); #endif
5. 자주 사용하는 표준 라이브러리 헤더 목록 (c)
| 헤더 파일 | 포함 내용 | 대표 함수 |
|---|---|---|
| <stdio.h> | 표준 입출력 | printf, scanf, fopen |
| <stdlib.h> | 메모리·변환·난수 | malloc, free, rand |
| <string.h> | 문자열 처리 | strcpy, strlen, strcmp |
| <math.h> | 수학 함수 | sqrt, pow, sin |
| <time.h> | 시간·날짜 | time, clock, difftime |
💡 요약
#include는 외부에 작성된 코드나 함수 선언을 현재 파일로 가져오는 통로입니다.
시스템 라이브러리는 < >를, 내가 만든 파일은 " "를 사용합니다.

![백준 2438번 (별 찍기 – 1, C++) [BAEKJOON]](https://lycos7560.com/wp-content/uploads/boj-og-1.png)
![Programmers 17683 [3차] 방금그곡 [2018 KAKAO BLIND RECRUITMENT]](https://lycos7560.com/wp-content/uploads/2023/03/programmers.jpg)
![백준 4435번 (중간계 전쟁, C++) [BAEKJOON]](https://lycos7560.com/wp-content/uploads/boj-og.png)