두 포함 방식의 핵심 차이
C/C++에서 헤더 파일을 포함하는 두 가지 방식, 즉 #include <파일명>과 #include "파일명"의 가장 큰 차이점은 전처리기(preprocessor)가 포함할 파일을 검색하는 위치에 있습니다.
#include <파일명>
전처리기는 구현 환경(컴파일러)에 종속된 방식으로 파일을 검색하며, 컴파일러가 미리 지정해 놓은 디렉터리들을 탐색합니다. 이 방식은 주로 다음과 같은 경우에 사용됩니다.
- 표준 라이브러리 헤더 파일 포함 (예:
<stdio.h>,<iostream>) - 컴파일러나 시스템이 제공하는 공식 헤더 참조
#include "파일명"
전처리기는 먼저 해당 #include 지시문이 작성된 소스 파일과 동일한 디렉터리에서 파일을 찾습니다. 만약 이 위치에서 파일을 발견하지 못하면, 이후에는 #include <파일명> 형태와 같은 방식으로 동작하여 컴파일러가 지정한 디렉터리를 검색합니다. 이 방식은 주로 개발자가 직접 작성한 프로젝트 내부의 헤더 파일을 포함할 때 사용됩니다.
요약 비교
- #include <파일명>: 컴파일러가 지정한 디렉터리만 검색 → 표준 라이브러리 헤더용
- #include "파일명": 현재 소스 파일의 디렉터리를 먼저 검색하고, 실패 시 표준 방식으로 전환 → 사용자 정의 헤더용
따라서 자신이 작성한 헤더 파일은 큰따옴표(" ")로, 시스템 및 표준 라이브러리 헤더는 꺾쇠괄호(< >)로 감싸는 것이 일반적인 코딩 관례입니다.