可以强制包括在Visual C ++中使用预编译的头文件吗?

时间:2017-12-11 10:55:53

标签: c++ visual-c++ precompiled-headers

如果为单个cpp文件设置CREATE SCHEMA(即不是整个项目),可以设置/Yu以指定要包含的头文件,或者必须包含头文件例如/FI如果将#include "stdafx.h"传递给CL?

以下所有导致基本相同的错误...

标题为/Yu"stdafx.h"C:\path\to\stdafx.h就像这样......

test.cpp

其中任何一个都要编译......

// Not including `stdafx.h`
void foo() {}

CL.exe /c /Yu"stdafx.h" /FI"C:\path\to\stdafx.h" test.cpp CL.exe /c /Yu /FI"C:\path\to\stdafx.h" test.cpp CL.exe /c /Yustdafx.h /FIC:\path\to\stdafx.h test.cpp CL.exe /c /Yu /FIC:\path\to\stdafx.h test.cpp

在我看来,应该可以使用fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?来指定预编译的标头。

这个答案似乎表明它甚至是首选的方法 https://stackoverflow.com/a/11052390/6225135

2 个答案:

答案 0 :(得分:1)

问题在于stdafx.h不是C:\path\to\stdafx.h。 VC ++进行字符串比较。您需要将C:\path\to\添加到包含路径,以便只使用/FI"stdafx.h"

答案 1 :(得分:0)

经过一些实验,我设法让它正常工作。事实证明我所要做的就是提供/Yu相同的值

/FI"stdafx.h"