include_alias

指定 short_filename 将用作别名 long_filename

#pragma include_alias( "long_filename", "short_filename" )
#pragma include_alias( <long_filename>, <short_filename> )

备注

某些文件系统大于 8.3 FAT 文件系统限制允许更长的头文件。 ,因为较长的头文件的前八个字符可能不是唯一的,编译器无法截断更长名称为 8.3。 只要编译器遇到 long_filename 字符串,它替换 short_filename,并查找头文件 short_filename 。 此说明必须在相应的 #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_alias 说明执行匹配文件名中的简单字符串;其他文件名不执行验证。 例如将下面的指令,

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

失真 () 替换未实现,,因为头文件字符串不完全匹配。 此外,作为参数使用的头文件名 /Yu 和 /Yc 编译器选项或 hdrstop 请注意,不进行替换。 例如,因此,如果源文件包含以下指令,

#include <AppleSystemHeaderStop.h>

相应的编译器选项应为

/YcAppleSystemHeaderStop.h

可以使用 include_alias 说明映射所有标头文件名到另一个。 例如:

#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"

编译器搜索文件 TWO.H 而不是 THREE.H。

请参见

参考

杂注指令和__Pragma关键字