【发布时间】:2015-03-14 06:04:25
【问题描述】:
想象一下以下源文件:
src/StdAfx.h
src/moresrc/MyFile.cpp
在MyFile.cpp 中,我需要包含预编译的头文件StdAfx.h。
如果我这样做:
#include "../StdAfx.h"
然后我会得到编译器错误:
warning C4627: '#include "../stdafx.h"': skipped when looking for precompiled header use
fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
所以这行不通。如果我这样做了
#include "StdAfx.h"
然后编译正确,但我在 Visual Studio 2013 中突出显示恼人的错误,如下所示:
所以,就像我说的,这可以编译,但很烦人。
如何在没有下划线的情况下包含“StdAfx.h”,但这样它才能编译?
【问题讨论】:
-
向 Microsoft 提交错误报告? ;)
-
我建议您不要使用预编译头文件并从项目中删除 stdafx.h。除非您有一个庞大的项目,否则预编译头文件所节省的时间不会超过它带来的麻烦,就像您面临的问题一样。
-
预编译的头文件应该可以节省时间,但如果其中一个头文件发生变化,则需要执行预编译过程。想法是将稳定的头文件放入“预编译”部分,将易失的头文件放在外面。
-
红色波浪下划线位于
#include下方,而不是标题名称下方。如果我没记错的话,您可以右键单击或将鼠标悬停在下划线上以查看它在抱怨什么。以小写形式提供标题名称会有所不同吗? -
同样的问题似乎在这里得到了回答:stackoverflow.com/questions/12434123/…
标签: c++ visual-studio stdafx.h