728x90
반응형
다음 두 include는 뭐가 차이가 날까?
#include <iostream>
#include "iostream"
<>와 ""의 차이는 컴파일러가 헤더 파일을 탐색하는 순서에 있다.
#include <iostream>
- 컴파일러에 설정된 시스템, 라이브러리 디렉터리의 경로를 탐색하여 헤더 파일을 가져온다.
#include "iostream"
- 현재 소스 파일(.cpp)이 있는 디렉터리의 경로를 탐색하여 헤더 파일을 가져온다.
- 그 후, 컴파일러에 설정된 시스템, 라이브러리 디렉터리의 경로를 탐색하여 헤더 파일을 가져온다.
즉, <iostream>을 사용하면 시스템 라이브러리 디렉터리의 경로를 탐색한다.
이 경로는 프로젝트 설정의 VC++ Directories의 Include Directories에 있다.
여기에는 기본 C/C++ 라이브러리 폴더 경로와 Windows 라이브러리 폴더 경로 등이 지정되어 있기 때문에, <>을 통해 여러 헤더들을 가져올 수 있는 것이다.

"iostream"을 사용하면 현재 프로젝트의 소스 파일(.h / .cpp)이 있는 디렉터리의 경로를 탐색을 먼저 한다.
여기에 해당하는 헤더 파일이 있다면, 그걸 가져온다.
없다면, 다음으로 시스템 라이브러리 디렉터리의 경로를 탐색한다.
만약, 프로젝트에 iostream 헤더 파일을 새로 만들고, "iostream"으로 include 하면 프로젝트 디렉터리를 먼저 탐색하기 때문에, 같은 이름에 있는 iostream 헤더를 가져와서, C++의 iostream 헤더를 가져오지 않는다.

Include Directories에 경로 탐색에 포함하고자하는 폴더 경로를 추가할 수 있다.
여기에 (ProjectDir)$;을 추가하면, <>에서 프로젝트의 소스 파일 경로도 탐색에 포함시킬 수 있다.

728x90
반응형
'📕Programming > 📝Etc' 카테고리의 다른 글
| 프로젝트 종속성 (0) | 2025.07.23 |
|---|---|
| 작업 목록(Task List) (0) | 2025.07.23 |
| 벡터 중복 원소 제거 (0) | 2024.11.12 |
| 비주얼 단축키 (0) | 2024.05.29 |
| ios_base::sync_with_stdio(false), cin.tie(0) 시간초과 해결 (0) | 2024.01.02 |