编译器警告(等级 1)C4727

命名为 pch_file 的 PCH 与 obj_file_1 和 obj_file_2 中的时间戳相同。 使用第一个 PCH。

注意

在 Visual Studio 2017 及更早版本中,预编译的标头默认称为 stdafx.h,而在 Visual Studio 2019 及更高版本中,默认情况下称为 pch.h

如果使用 /Yc 编译多个组件,并且编译器能够使用相同的 .pch 时间戳标记所有 .obj 文件,就会发生 C4727 错误

若要解决此问题,请使用 /Yc /c 编译一个源文件(创建 pch),并使用 /Yu /c(使用 pch)单独编译其他源文件,然后将它们链接在一起

因此,如果执行以下操作就会生成 C4727:

cl /clr /GL a.cpp b.cpp c.cpp /Ycstdafx.h

可以改为执行以下操作:

cl /clr /GL a.cpp /Ycstdafx.h /c

cl /clr /GL b.cpp c.cpp /Yustdafx.h /link a.obj

cl /clr /GL a.cpp b.cpp c.cpp /Ycpch.h

可以改为执行以下操作:

cl /clr /GL a.cpp /Ycpch.h /c

cl /clr /GL b.cpp c.cpp /Yupch.h /link a.obj

有关详细信息,请参阅