请帮助我几个问题:什么是预编译的标题?它们的用途是什么?怎么做一个?以及如何包含一个?
答案 0 :(得分:1)
预编译头文件(简称PCH)是一些编译器支持的东西。支持及其包含的内容[除了“希望能够比原始头文件更快地读取的内容”]由每个编译器生产者决定。我对Clang如何处理预编译头文件有一点了解,它基本上是头文件中“解析”C或C ++代码的二进制形式 - 因此它生成一个不需要解析的单个文件[相同作为头文件本身的级别]。
目的是减少编译时间。但是,根据我的经验,编译的LONG部分通常是带优化的代码生成。但是,在某些情况下,特别是当涉及LOTS头文件时,读取和解析头文件的时间可能是整个编译时间的一个显着部分。
一般来说,如何使用它们是告诉编译器你想要预编译的头文件,并且对于每个编译,编译器将生成预编译头文件(如果它尚不存在),并在它存在时读取它[1 ] - 通常这是针对一个命名的头文件完成的,其中包含许多其他内容。 Microsoft Visual Studio通常有一个名为"stdafx.h"
的文件,它是预编译的 - 至少在MS产品的情况下,这必须是项目中包含的第一个文件[这样就没有其他头文件了示例更改了某些宏的含义 - 我希望有一个宏的编译器/命令行定义的哈希,所以如果其中一个更改,则重新编译PCH。
这个想法不是在这个预编译文件中包含每个头文件,而是在MOST文件中使用的头文件,并且这些头文件不经常更改(如果文件是PCH,则需要重新生成PCH)预编译已经改变,所以如果你经常更改头文件,那就没有意义了。当然,与任何其他构建依赖项一样,如果PCH已更改,则需要重建使用预编译头的任何内容。
要确切了解如何使用它,您需要阅读您正在使用的编译器的文档。
[1]如果没有任何改变,则需要重建。