19

From what i understand stdafx.h is a precompiled header file and is used to make compile time faster in visual studio. When i create a c++ project in visual studio 2012 there is also a stdafx.cpp. Can someone explain the relationship between stdafx.h and stdafx.cpp?

4

1 回答 1

32

预编译的头文件可以大大加快项目中 .cpp 文件的编译速度。按照惯例,stdafx.h #include 包含您要预编译的所有 .h 文件。您可以将其命名为任何您想要的名称,但项目模板只选择 stdafx.h

但在此之前,必须有一个#includes stdafx.h 并首先编译的 .cpp 文件。在项目中的所有其他 .cpp 文件之前。完成后,编译器可以使用已创建的 .pch 文件并快速编译所有其他 .cpp 文件,而不再需要实际 #include 头文件了。

Stdafx.cpp 就是那个 .cpp 文件。它的设置与所有其他 .cpp 文件不同,它是使用 /Yc构建的。“创建预编译头文件”选项。


更新:28 年后,微软在 VS2019 上打破了他们“曾经有一个标准框架但没有人见过它”的做法。现在命名为“pch”而不是“stdafx”,肯定是更明显的首字母缩略词。只是换了个名字,机制还是一样的。

于 2013-07-28T03:37:05.787 回答