hdrstop
提供对预编译文件名和编译状态的保存位置的额外控制。
#pragma hdrstop [( "filename" )]
备注
filename 是要使用或创建的预编译头文件的名称(取决于是否指定 /Yu 或 /Yc)。 如果 filename 不包含路径说明,则假定预编译头文件位于源文件所在的同一目录中。
当用 /Yc 编译时,如果 C 或 C++ 文件包含 hdrstop 杂注,则编译器将保存编译状态,直到到达杂注位置。 不会保存遵循杂注的任何代码的编译状态。
使用 filename 命名将编译状态保存到的预编译头文件。 hdrstop 和 filename 之间的空格是可选的。 hdrstop 杂注中指定的文件名是字符串,并且受任何 C 或 C++ 字符串的约束。 具体来说,您必须将其包含在引号中并使用转义符(反斜杠)来指定目录名称。 例如:
#pragma hdrstop( "c:\\projects\\include\\myinc.pch" )
预编译头文件的名称是根据以下规则按优先顺序决定的。
/Fp 编译器选项的参数
#pragma hdrstop 的 filename 参数
扩展名为 .PCH 的源文件基名称
对于 /Yc 和 /Yu 选项,如果两个编译选项和 hdrstop 杂注都未指定文件名,则将源文件的基名称用作预编译头文件的基名称。
还可以使用预处理命令来执行宏替换,如下所示:
#define INCLUDE_PATH "c:\\progra~`1\\devstsu~1\\vc\\include\\"
#define PCH_FNAME "PROG.PCH"
.
.
.
#pragma hdrstop( INCLUDE_PATH PCH_FNAME )
以下规则管理可将 hdrstop 杂注放置到的位置:
它必须出现在任何数据或函数声明/定义的外部。
必须在源文件而不是头文件中指定它。
示例
#include <windows.h> // Include several files
#include "myhdr.h"
__inline Disp( char *szToDisplay ) // Define an inline function
{
... // Some code to display string
}
#pragma hdrstop
在此示例中,hdrstop 杂注会在已包含两个文件并且已定义内联函数后出现。 最初,这可能是杂注的临时位置。 但请考虑,通过将手动预编译选项 /Yc 和 /Yu 与 hdrstop 杂注结合使用,您可以预编译整个源文件 - 甚至是内联代码。 Microsoft 编译器不会只允许您预编译数据声明。