#include 지시문(C/C++)

지시문이 나타나는 지점에 지정된 파일의 내용을 포함하도록 전처리기에게 지시합니다.

구문

#include "path-spec"
#include <path-spec>

설명

상수 및 매크로 정의를 포함 파일(헤더 파일이라고도 함)으로 구성한 다음 지시문을 사용하여 #include 원본 파일에 추가할 수 있습니다. include 파일은 외부 변수와 복잡한 데이터 형식의 선언을 통합하는 데 유용합니다. 형식은 해당 목적으로 만든 include 파일에서 한 번만 정의하고 명명하면 됩니다.

경로 사양선택적으로 디렉터리 사양 앞에 있을 수 있는 파일 이름입니다. 이 파일 이름은 기존 파일의 이름이어야 합니다. path-spec의 구문은 프로그램이 컴파일되는 운영 체제에 따라 달라집니다.

사용하여 /clr컴파일된 C++ 애플리케이션에서 어셈블리를 참조하는 방법에 대한 자세한 내용은 지시문을 참조하세요#using.

두 구문 형식 #include 모두 지시문을 지정된 파일의 전체 내용으로 바꿉니다. 두 양식의 차이점은 경로가 불완전하게 지정되었을 때 전처리기가 검색하는 경로의 순서입니다. 다음 표에서는 두 구문 형식 간 차이를 보여 줍니다.

구문 형식 작업
따옴표로 묶인 형식 전처리기는 다음 순서로 include 파일을 검색합니다.

1) 문이 포함된 파일과 동일한 디렉터리에 있습니다 #include .

2) 현재 열려 있는 포함 파일의 디렉터리에서 파일을 연 역순으로 포함합니다. 검색은 부모 include 파일의 디렉터리에서 시작하여 위쪽의 상위 부모 include 파일 디렉터리로 진행됩니다.

3) 각 /I 컴파일러 옵션에 의해 지정된 경로를 따라.

4) 환경 변수에 의해 INCLUDE 지정된 경로를 따라.
꺾쇠 괄호 형식 전처리기는 다음 순서로 include 파일을 검색합니다.

1) 각 /I 컴파일러 옵션에서 지정한 경로를 따라 이동합니다.

2) 명령줄에서 컴파일이 발생할 때 환경 변수에 의해 INCLUDE 지정된 경로를 따라 수행됩니다.

전처리기가 지정된 이름의 파일을 찾는 즉시 검색이 중단됩니다. 큰따옴표(" ")로 포함 파일에 대한 완전하고 명확한 경로 사양을 묶는 경우 전처리기는 해당 경로 사양만 검색하고 표준 디렉터리를 무시합니다.

큰따옴표로 묶인 파일 이름이 불완전한 경로 사양인 경우 전처리기는 먼저 부모 파일의 디렉터리를 검색합니다. 부모 파일은 지시문을 포함하는 파일입니다 #include . 예를 들어 file1 파일에 file2라는 파일을 포함하는 경우 file1은 부모 파일입니다.

포함 파일을 중첩수 있습니다. 지시문은 #include 다른 #include 지시문에 의해 명명된 파일에 나타날 수 있습니다. 예를 들어 file2에는 file3이 포함될 수 있습니다. 이 경우 file1은 여전히 file2부모이지만 file3조부모가 됩니다.

포함 파일이 중첩되고 명령줄에서 컴파일이 수행되면 부모 파일의 디렉터리에서 디렉터리 검색이 시작됩니다. 그런 다음 모든 조부모 파일의 디렉터리를 통해 진행합니다. 즉, 현재 처리 중인 소스가 포함된 디렉터리를 기준으로 검색이 시작됩니다. 파일을 찾을 수 없는 경우 검색은 (추가 포함 디렉터리) 컴파일러 옵션으로 /I 지정된 디렉터리로 이동합니다. 마지막으로 환경 변수에 지정된 INCLUDE 디렉터리를 검색합니다.

Visual Studio 개발 환경 INCLUDE 내에서 환경 변수는 무시됩니다. 포함 디렉터리에 대한 프로젝트 속성에 지정된 값이 대신 사용됩니다. Visual Studio에서 포함 디렉터리를 설정하는 방법에 대한 자세한 내용은 포함 디렉터리추가 포함 디렉터리를 참조하세요.

다음 예제는 꺾쇠 괄호를 사용한 파일 포함을 보여 줍니다.

#include <stdio.h>

이 예제에서는 원본 프로그램에 명명된 stdio.h 파일의 내용을 추가합니다. 꺾쇠 괄호로 인해 전처리기는 컴파일러 옵션으로 INCLUDE 지정된 디렉터리를 검색한 후 환경 변수 stdio.h에 지정된 디렉터리를 /I 검색합니다.

다음 예제는 따옴표로 묶인 형식을 사용한 파일 포함을 보여 줍니다.

#include "defs.h"

이 예제에서는 원본 프로그램에 지정된 defs.h 파일의 내용을 추가합니다. 따옴표 기호는 전처리기가 먼저 상위 소스 파일이 포함된 디렉터리를 검색함을 의미합니다.

include 파일 중첩은 최대 10수준까지 할 수 있습니다. 중첩 #include 처리가 완료되면 전처리기에서 바깥쪽 부모 include 파일을 원래 원본 파일에 계속 삽입합니다.

Microsoft 전용

포함할 원본 파일을 찾기 위해 전처리기는 먼저 컴파일러 옵션에서 /I 지정한 디렉터리를 검색합니다. /I 옵션이 없거나 실패하는 경우 전처리기는 환경 변수를 사용하여 INCLUDE 꺾쇠 괄호 안에 포함된 파일을 찾습니다. INCLUDE 환경 변수 및 /I 컴파일러 옵션은 세미콜론(;)으로 구분된 여러 경로를 포함할 수 있습니다. 둘 이상의 디렉터리가 옵션의 /I 일부 또는 환경 변수 내에 INCLUDE 나타나는 경우 전처리기는 표시되는 순서대로 해당 디렉터리를 검색합니다.

예를 들어 다음과 같은 명령은

CL /ID:\msvc\include myprog.c

는 전처리기가 디렉터리 D:\msvc\include\ 에서 포함 파일(예: stdio.h.)을 검색하도록 합니다. 다음의 명령 또한

SET INCLUDE=D:\msvc\include
CL myprog.c

동일한 결과를 산출합니다. 두 검색 집합이 모두 실패하면 치명적 컴파일러 오류가 생성됩니다.

콜론(예 F:\MSVC\SPECIAL\INCL\TEST.H: )을 포함하는 경로가 있는 포함 파일에 대해 파일 이름이 완전히 지정된 경우 전처리기는 경로를 따릅니다.

지정된 포함 파일의 경우 부모 파일 #include "path-spec"의 디렉터리에서 디렉터리 검색이 시작되고 모든 조부모 파일의 디렉터리를 통해 진행됩니다. 즉, 처리 중인 원본 파일이 포함된 디렉터리를 기준으로 검색이 시작됩니다. 조부모 파일이 없고 파일을 찾을 수 없는 경우 파일 이름이 꺾쇠 괄호로 묶인 것처럼 검색이 계속됩니다.

END Microsoft 전용

참고 항목

전처리기 지시문
/I (추가 포함 디렉터리)