반응형 Show [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>가 인식이 안될 것이다. 실수로 시스템 헤더 경로 삭제 <stdio.h> 시스템 헤더 인식 불가
이런 경우 '포함 디렉터리 우측에 V 체크박스 클릭 - <부모 또는 프로젝트 기본값에서 상속> 버튼 클릭 - 적용'을 누르면 디폴트 설정값으로 이동한다.
다시 <stdio.h> 헤더를 올바르게 인식한다.
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) 검색
반응형 공유하기 게시글 관리 구독하기Half Moon'IT > C C++' 카테고리의 다른 글[C/C++] #pragma once 의미 (0)2021.03.18[C/C++]동적할당 malloc, calloc 차이점!! (0)2021.03.17[C/C++] #if, #ifdef, #elif 등등 (0)2021.03.17[C/C++] Visual Studio 유용한 기능 및 단축키 + 비디오로 저장 (0)2021.02.22[C/C++] 마우스 매크로 만들기 (0)2021.02.22 |