[C/C++] #include에서 " " 와 < > 의 차이점 및 헤더 파일 경로변경 방법
1. (시스템 헤더) #include < >
- '< >'는 Visual Studio 및 Windows에서 기본제공하는 시스템 헤더를 include하는데 사용한다.
- Windows 시스템 헤더의 매크로는 $(windowsSDK_IncludePath) 이다.
(경로 : C:\\Program Files (x86)\\Windows Kits\\10\\Include)
* 참고로 stdio.h 헤더파일은 해당 경로에 저장되어 있다.
(C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.18362.0\\ucrt)
- Visual Studio 시스템 헤더의 매크로는 $(VC_IncludePath)이다.
(경로 : C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\VC)
- '구성 속성 - VC++ 디렉터리 - 포함 디렉터리'에 디폴트로 시스템 헤더 경로가 저장되어있다.
※ 디렉터리에 저장된 시스템 경로를 실수로 지웠다면? (<stdio.h> 헤더 인식 불가)
아래와 같이 포함 디렉터리(또는 다른 디폴트 디렉터리들) 경로를 실수로 지워버렸다면 <stdio.h>가 인식이 안될 것이다.
이런 경우 '포함 디렉터리 우측에 V 체크박스 클릭 - <부모 또는 프로젝트 기본값에서 상속> 버튼 클릭 - 적용'을 누르면 디폴트 설정값으로 이동한다.
2. (유저 헤더) #include " "
- " "는 유저가 만든 헤더를 include하는데 사용한다.
- " "가 기본적으로 가리키는 위치는 유저가 생성한 프로젝터 폴더이다.
- 불러오는 위치의 매크로는 $(ProjectDir)이다.
예) 아래와 같이 A 프로젝트를 생성 후 A\\test.h를, A\\header\\test2.h 헤더파일을 각각 생성했다.
아래와 같이 #inlcude " "가 기본적으로 가리키는 위치는 새로 생성한 A 프로젝트 폴더이다.
하지만 A\\header 폴더 하위에 생성된 test2.h 파일은 인식을 못하고 있다. 이럴 경우, 헤더파일의 폴더를 추가해줘야 한다.
※ " "가 가리키는 헤더파일 경로를 추가하는 방법
1) '프로젝트-속성' 또는 'Alt+F7' 입력
2) '구성 속성 - VC++ 디렉터리 - 포함 디렉터리'에서 ; 후 경로 입력 - 적용 - 확인
예) '$(IncludePath);$(ProjectDir)/header' 입력(매크로입력) 또는
'$(IncludePath);C:\\Users\\PC\\source\\repos\\A\\header' 입력(절대경로입력)
* 기존에 저장되어있는 경로 수정 또는 삭제 금지. 헤더파일을 못읽을 수 있음.
* 경로는 \\(달러)도 입력가능하고, /(슬래시)도 입력 가능하다.
헤더 경로를 추가 후 test2.h 헤더파일도 정상적으로 인식한다.
* 참고로, ""(유저헤더)가 <>(시스템헤더)보다 인식 범위가 넓다.
즉, ""안에 들어가는 헤더파일을 <>(시스템헤더)의 경로에서 먼저 검색하고 없으면 유저헤더 경로에서 검색한다.
(그래도 없으면 에러를 띄운다.)
이 같은 원리로 시스템 헤더인 stdio.h를 include할 때 #include <stdio.h>가 아닌,
#include "stdio.h"로 입력하여도 에러가 나지 않는다.
* 단 시스템헤더와 유저헤더 구분을 식별하기 위하여 <>와 ""를 구별하여 쓰는 것을 권장한다.
추가) 매크로가 지시하는 경로가 어디인지 알고 싶을 경우,
1) 디렉터리 우측에 'V 체크박스' 클릭 - '편집' 클릭
2) 우측 하단에 '매크로' 클릭
3) 검색
'IT > C C++' 카테고리의 다른 글
[C/C++] 정수, 실수 나머지 구하기 (0) | 2022.05.20 |
---|---|
[C언어] 제곱 내장 함수 사용 방법 (pow 함수) (0) | 2022.05.16 |
[C/C++] 프로그램 종료 후 콘솔창 유지시키기 (0) | 2022.03.17 |
[C/C++] 키보드 매크로 프로그램 만들기 (0) | 2022.01.08 |
[C/C++] #pragma once 의미 (0) | 2021.03.18 |