包含stdafx.h的最佳方法,当它是1个目录时?

dan*_*n-O 4 c++ stdafx.h visual-studio

想象一下以下源文件:

src/StdAfx.h
src/moresrc/MyFile.cpp
Run Code Online (Sandbox Code Playgroud)

MyFile.cpp,我需要包含预编译的头文件StdAfx.h.

如果我这样做:

#include "../StdAfx.h"
Run Code Online (Sandbox Code Playgroud)

然后我会得到编译器错误:

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?
Run Code Online (Sandbox Code Playgroud)

所以这不起作用.如果我这样做的话

#include "StdAfx.h"
Run Code Online (Sandbox Code Playgroud)

然后编译正确,但我得到Visual Studio 2013中突出显示的恼人错误,如下所示:

错误突出显示

所以,就像我说的,这个编译,但它很烦人.

如何在没有下划线的情况下包含"StdAfx.h",但是它会编译?

dew*_*led 5

您可以将$(ProjectDir)(项目根目录)添加到项目选项(C++ - >常规 - >其他包含目录)中的目录列表中.然后,您将能够在包含中指定相对于项目根目录的路径.例如,如果你有utils/a.h并且想要使用它,foo/bar/b.h你可以写#include "utils/a.h"而不是#include "../../utils/a.h".如果您拥有stdafx.h项目根目录,则可以将其包含在内#include "stdafx.h".