预编译头文件详解
一、预编译头文件来自编译器早期版本
预编译头文件(Precompiled Header)是编译器提供的一种优化编译速度的机制。早期的编译器在每次编译时都需要包含大量的头文件,这既浪费时间,也消耗程序员的精力。为了解决这一问题,编译器开始提供预编译头文件的功能,以便增强编译器的性能。
二、预编译头文件可以优化程序的性能
预编译头文件可以优化程序的性能,特别是当程序包含大量头文件的时候。预编译头文件包含编译器在编译源代码时需要的所有包含文件的信息,这包括类型定义、函数声明和宏定义等等。在源代码中包含预编译头文件可以避免编译器对头文件的重复编译,从而加快编译速度,提高程序的性能。
三、预编译头文件目录
预编译头文件默认放置于编译器的包含文件目录中,但是也可以单独放置于一个目录中,以便在编译时使用。在 Visual Studio 中,可以通过项目属性中“C/C++”选项卡下的“预编译头”进行设置。预编译头文件也可以使用绝对或相对路径来引用。
四、预编译头文件种类
在 C++中,有两种类型的预编译头文件:
- .pch(Precompiled header)文件:它是编译器把头文件处理了一遍后存储下来的文件,文件类型是与操作系统相关的二进制文件,用于消除冗余的编译过程,只需要在编译期向
.cpp
文件中插入该头文件的指令即可。 - .hpp(Header plus plus)文件:它是一个简单的文本格式,用于不同的编译环境之间共享代码和头文件。在一些情况下,
.hpp
文件可以取代.pch
文件。
五、预编译头文件怎么创建
创建预编译头文件的方法因编译器而异,但通常需要以下步骤:
- 创建包含所需头文件的源代码文件,保存为一个单独的文件。
- 在这个源代码文件的顶部,包含所有需要的头文件。
- 在编译器(例如 Visual Studio)的设置中启用预编译头文件的选项。
- 编译源代码文件,将其转换为预编译头文件。
六、预编译头文件是什么
预编译头文件是编译器已经预先编译好的头文件,它包含了所有的声明、宏定义和类型定义等等。当源代码文件需要一个预编译头文件中提供的类型时,需要在源代码文件的顶部包含该预编译头文件。源代码文件会在编译时把预编译头文件合并到自己的代码中,以便使用其中的类型。
七、预编译头文件都包含什么
预编译头文件包括所有需要在编译时包含的头文件、类声明和函数声明等等。由于预编译头文件会被插入到源代码文件中,因此它也可以包括一些全局变量和函数定义。
八、预编译头文件来自
预编译头文件来自几个不同的来源:
- 编译器自身,包含编译器定义的头文件。
- 操作系统头文件,包含由操作系统定义的头文件。
- 第三方库的头文件,包括常用的 STL 库等等。
九、预编译头文件设置
在 Visual Studio 中,可以通过项目属性中的“C/C++”选项卡来设置预编译头文件。通常有以下选项可用:
- 不使用预编译头文件:当项目中不需要使用预编译头文件时,可以选择该选项。
- 使用
.h
文件来生成预编译头文件:该选项可用于生成.pch
文件。 - 使用
.hpp
文件来生成预编译头文件:该选项可用于生成.hpp
文件。 - 预编译头文件名:可以指定生成的预编译头文件的名称。
示例:在 Visual Studio 中设置预编译头文件的步骤
1. 打开项目属性
2. 在“C/C++”选项卡下,点击“预编译头”
3. 选择“是”以启用预编译头文件
4. 在“预编译头文件”框中输入预编译头文件的名称(默认为"stdafx.h")
5. 点击“应用”以保存更改
十、小结
预编译头文件是一种优化程序性能的机制,它通过避免重复编译头文件,从而提高编译速度。预编译头文件可以通过编译器设置来启用,并且存放在编译器的包含文件目录中,或者单独放置于一个目录中。预编译头文件可以是 .pch
文件或 .hpp
文件,并且包含所有需要在编译时包含的头文件、类声明和函数声明等等。预编译头文件来自编译器自身、操作系统头文件和第三方库的头文件等不同来源。