stdafx.h的目的

时间:2010-06-04 16:33:09

标签: c++ visual-c++ precompiled-headers stdafx.h

stdafx.h 文件的目的是什么?预编译标题是什么意思?

4 个答案:

答案 0 :(得分:29)

  

stdafx.h 是由...生成的文件   Microsoft Visual Studio IDE向导,   这描述了两个标准系统   和项目特定的包含文件   经常使用但很难使用   永远改变。   兼容的编译器(例如,   Visual C ++ 6.0及更新版本将会   预编译此文件以减少   整体编译时间

     

Visual C ++会   之前没有编译任何东西    源文件中的#include "stdafx.h" ,除非是编译选项   /Yu'stdafx.h'未经检查(由   默认);它假定了所有代码   来源并包括该行   已编译。

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

答案 1 :(得分:13)

扩展其他优秀答案:

stdafx.h 是包含单个项目的所有常用标头的文件。例如,这将包括所有Windows定义。因为这个文件包含很多东西,编译器在处理它时会有点慢。通过预编译,编译器可以跳过大部分处理并一遍又一遍地重复使用它;只要它包含的文件都没有改变,预编译的结果也不需要改变。

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

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

答案 2 :(得分:6)

它通常用于预编译头文件的名称。虽然不需要使用该确切名称,但只需使用默认名称。 I explain more about pre-compiled headers on VC++ and g++ here

您可以使用预编译的标头来加快编译速度。

这个想法是你放置任何不会改变的头文件,并且你在预编译头中的几个源文件中使用它。然后编译器将不需要为每个编译单元重新处理这些头。

答案 3 :(得分:2)

这是precompiled header,以减少编译时间。