似乎当我将选项设置为 /Yu 时,它只使用任何 pch,而不检查它是否需要更新,这意味着它将保留它预编译的标头列表并检查自上次以来这些文件是否已更新它们被预编译的时间。
但是当我 /Yc 时,它只是在我每次构建我的项目时重新预编译。
我不太确定 Visual C++ 是否能像我想象的那样处理这些行为,或者我是否犯了编辑 .h 文件的错误或其他错误。
那么我是否应该在每次更新标头时设置 /Yc、构建、重置为 /Yu、继续迭代,但重置为 /Yc、重建,然后重置为 /YU?
似乎当我将选项设置为 /Yu 时,它只使用任何 pch,而不检查它是否需要更新,这意味着它将保留它预编译的标头列表并检查自上次以来这些文件是否已更新它们被预编译的时间。
但是当我 /Yc 时,它只是在我每次构建我的项目时重新预编译。
我不太确定 Visual C++ 是否能像我想象的那样处理这些行为,或者我是否犯了编辑 .h 文件的错误或其他错误。
那么我是否应该在每次更新标头时设置 /Yc、构建、重置为 /Yu、继续迭代,但重置为 /Yc、重建,然后重置为 /YU?
您设置一个包含您希望预编译使用的头/Yc
文件的文件,如果需要,它将生成 pch 文件(即,pch 文件相对于头文件已过时)。然后将包含它的其他文件设置为 use /Yu
,它们使用您的第一个文件生成的预编译头文件。
如果您使用 Visual Studio 向导生成带有预编译标头的控制台项目,您将看到这一点。该stdafx.cpp
文件包括stdafx.h
,并已/Yc
设置为其生成一个 pch 文件;然后该main.cpp
文件stdafx.h
也包含,但已/Yu
设置,因此它使用 pch 文件。
(起初我发现文档的预编译头部分有点不透明,但是一旦我设置了预编译头并且我看到它们工作,它就开始变得更有意义了。)