include_alias pragma

지시문에서 #include alias_filename 발견되면 컴파일러가 해당 위치에 actual_filename 대체합니다.

구문

#pragma include_alias( "alias_filename" , "actual_filename" )
#pragma include_alias(<<>,alias_filename actual_filename>)

설명

지시 include_aliaspragma 문을 사용하면 원본 파일에 포함된 파일 이름에 대해 이름이 다르거나 경로가 다른 파일을 대체할 수 있습니다. 예를 들어 일부 파일 시스템은 8.3 FAT 파일 시스템 제한보다 더 긴 헤더 파일 이름을 허용합니다. 긴 헤더 파일 이름의 처음 8자만 고유하지 않을 수 있으므로 컴파일러는 더 긴 이름을 8.3으로 잘라낼 수 없습니다. 컴파일러가 지시문에서 alias_filename 문자열을 #include때마다 대신 이름 actual_filename 대체합니다. 그런 다음 actual_filename 헤더 파일을 로드합니다. 해당 pragma#include 지시문 앞에 나타나야 합니다. 예시:

// First eight characters of these two files not unique.
#pragma include_alias( "AppleSystemHeaderQuickdraw.h", "quickdra.h" )
#pragma include_alias( "AppleSystemHeaderFruit.h", "fruit.h" )

#pragma include_alias( "GraphicsMenu.h", "gramenu.h" )

#include "AppleSystemHeaderQuickdraw.h"
#include "AppleSystemHeaderFruit.h"
#include "GraphicsMenu.h"

검색할 별칭은 사양과 정확히 일치해야 합니다. 대/소문자, 맞춤법 및 큰따옴표 또는 꺾쇠 괄호 사용은 모두 일치해야 합니다. 파일 include_aliaspragma 이름에 대한 간단한 문자열 일치를 수행합니다. 다른 파일 이름 유효성 검사는 수행되지 않습니다. 예를 들어 다음과 같은 지시문에서는

#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"

헤더 파일 문자열이 정확히 일치하지 않으므로 별칭 대체가 수행되지 않습니다. 또한 컴파일러 옵션 또는 /Ychdrstoppragma컴파일러 옵션의 /Yu 인수로 사용되는 헤더 파일 이름은 대체되지 않습니다. 예를 들어 소스 파일에 다음 지시문이 포함된 경우,

#include <AppleSystemHeaderStop.h>

해당 컴파일러 옵션은 다음과 같이 됩니다.

/YcAppleSystemHeaderStop.h

헤더 파일 이름을 다른 이름으로 매핑하는 데 사용할 include_aliaspragma 수 있습니다. 예시:

#pragma include_alias( "api.h", "c:\version1.0\api.h" )
#pragma include_alias( <stdio.h>, <newstdio.h> )
#include "api.h"
#include <stdio.h>

큰따옴표로 묶인 파일 이름과 꺾쇠 괄호로 묶인 파일 이름을 혼합하지 마세요. 예를 들어 위의 두 #pragma include_alias 지시문을 고려할 때 컴파일러는 다음 #include 지시문에 대한 대체를 수행하지 않습니다.

#include <api.h>
#include "stdio.h"

또한 다음 지시문은 오류를 생성합니다.

#pragma include_alias(<header.h>, "header.h")  // Error

오류 메시지 또는 미리 정의된 __FILE__ 매크로의 값으로 보고된 파일 이름은 대체가 완료된 후의 파일 이름입니다. 예를 들어 다음 지시문 뒤의 출력을 참조하세요.

#pragma include_alias( "VERYLONGFILENAME.H", "myfile.h" )
#include "VERYLONGFILENAME.H"

오류가 VERYLONGFILENAME.H 발생하면 다음과 같은 오류 메시지가 표시됩니다.

myfile.h(15) : error C2059 : syntax error

또한 전이성은 지원되지 않습니다. 다음과 같은 지시문이 주어진 경우

#pragma include_alias( "one.h", "two.h" )
#pragma include_alias( "two.h", "three.h" )
#include "one.h"

컴파일러는 .가 아닌 three.h파일을 two.h 검색합니다.

참고 항목

Pragma 지시문 및 __pragma_Pragma 키워드(keyword)