无法打开源文件“stdafx.h”。

6

我有两个包含文件头

#include "stdafx.h"
#include "psapi.h"

然而,它会出现“stdafx.h”无法打开源文件的编译时错误。我正在使用Visual Studios 2010。 “stdafx.h”是否必要?我认为是因为如果我将其移除,程序将无法编译。
2个回答

8
Visual Studio将其用于“预编译头文件”功能。如果您不熟悉Visual Studio,建议保留项目中的stdafx.h文件。
当然,如果要#include它,则必须拥有它。

5
如果你包含它,那么你必须在每个编译单元中首先包含它。预处理器将忽略在遇到 #include "stdafx.h" 之前的每一行代码。你可以在它之前放置任何内容,不会有语法错误。 - Benoit
1
@Benoit:我的Visual Studio(2010)在stdafx.h不是第一个包含文件时会报告一些内容(至少是警告)。 - Vlad
1
注意:如果任何一个文件包含stdafx.h,则它们全部都应该包含。我曾经遇到过只有一个第三方文件使用了它的问题,因此我不得不在所有头文件中包含它。我更喜欢不使用它。我的项目不够大,无法注意到通过预编译节省的时间;在Visual Studio中,这种麻烦不值得节省。 - Thomas Matthews
1
@Benoit:您的意见应该作为答案!我遇到这个错误时感到困惑了很长时间,因为我找不到合理的解释!谢谢! - AnyOneElse

2

stdafx.h 用于预编译头文件。它不是必需的,但如果您以前从未禁用过编译器功能,则禁用该功能可能有点棘手。如果您有它,则必须在编译其他任何内容之前编译 'stdafx.cpp'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接