stdafx.h的目的是什么?

39
stdafx.h文件的目的是什么?预编译头又是什么意思?
4个回答

31
stdafx.h是一个文件,由Microsoft Visual Studio IDE向导生成,描述了标准系统和项目特定的频繁使用但几乎不会更改的包含文件。兼容的编译器(例如Visual C++ 6.0及更高版本)将预编译此文件以减少总体编译时间。在源文件中,除非取消勾选编译选项/Yu'stdafx.h'(默认情况下),否则Visual C++不会编译#include "stdafx.h"之前的任何内容;它假定源代码中直到包括该行的所有代码已经编译完毕。

http://en.wikipedia.org/wiki/Precompiled_header


14
编译器忽略 #include "stdafx.h" 之前的所有内容,这一点非常重要。我以前就中过这个招。 - Mark Ransom
是的,非常重要的一点是,在stdafx.h之前编译器会忽略包含文件。我曾经花了半天时间想知道为什么我的代码在进行了小修改后仍然能正常工作。 - evk1206

13

在其他优秀的答案上进行补充:

stdafx.h是一个文件,它包含单个项目中所有常用头文件。例如,这将包括所有Windows定义。因为该文件包括了很多内容,所以编译器处理它时会有点慢。通过预编译它,编译器可以跳过大部分处理,并反复重用它。只要被它包含的文件没有更改,预编译结果也不需要更改。

stdafx.h的名称只是惯例。如果您将所有源文件更改为包含新文件,则可以轻松地将其重命名为其他名称。

要生成实际的预编译头文件,您需要在项目中有一个具有特殊编译标志以产生预编译输出的源文件。按照惯例,这个文件的名称为stdafx.cpp,如果您检查该源文件的设置,您将看到它与其他文件不同。


6

这通常用于预编译头文件的名称。虽然不一定需要使用该确切名称,但默认情况下应如此。 在这里我解释了有关VC++和g++上预编译头文件的更多信息

您可以使用预编译头文件来加快编译速度。

其思想是将任何不会更改且在多个源文件中使用的头文件放置在预编译头文件中。然后编译器就不需要为每个编译单元重新处理这些头文件。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接