在Windows中运行C++程序是否需要添加头文件"stdafx.h"?

3

我对Windows C++不熟悉,我在Visual Studio 2008中创建了一个应用程序,并创建了新的Win32控制台。我编译了一个示例C++程序,它要求我添加stdafx头文件,这个头文件是否是必须添加的?我不需要任何Windows库...


如果你不编译它,会导致程序出现错误吗? - AlcubierreDrive
是的,它没有编译成功,给了我一个错误。 - sango
5个回答

2
不需要,只需创建一个空项目,并添加一个主要的.cpp文件。这对于任何非常小的win32项目都可以。stdafx是绝对不必要的,说实话,我不使用它,甚至不知道它是什么(我只有大约一个月的MSVC经验)。
但是,要制作win32应用程序,您需要包含#include <Windows.h>,这是Windows头文件。

2
+1 空项目。这样你就不必编辑 Visual Studio 尝试帮助你的内容了。 - default
我同意,我总是喜欢从零开始。 - Alexander Rafferty
@Michael:对于“试图帮助你”的说法,我点赞。;-) - Thomas Matthews

2
要删除该文件,您需要在项目设置中禁用预编译头文件。这可能会增加编译时间,因此我建议您只是熟悉该机制。它在维基百科上有描述(链接),也在MSDN上有描述(链接)

1

向导会默认您需要一个名为预编译头文件的东西,并基于此假设生成您的项目。在新项目向导中,请确保单击“下一步”而不是“完成”(或类似),并要求一个空项目。完成后,添加一个新的.cpp文件并在其中编写代码。您应该不再需要在每个源文件中包含stdafx.h。

预编译头文件在大型C ++项目中非常有用,因为它们可以显着减少编译时间。但是,对于大多数小型到中型项目,它们主要是一种烦恼。我个人倾向于创建空项目-如果我想要PCH,我会自己添加它们。


实际上,我需要在生产后的Linux环境中运行这个项目。 - sango
@sango:更加理由选择一个空项目。我相信gcc可以进行预编译头文件,但不确定其是否与Visual C++兼容。 - Martin Törnwall
@sango:那么你就不应该使用它。要么创建一个没有预编译头文件的新项目,要么像一些答案已经描述的那样更改现有项目以不使用它们。 - sbi

1

这个文件并非必需。

它是由Visual Studio向导创建的,其目的是成为通用的包含文件,您将在所有cpp文件中包含它,并包含您所需的所有头文件。它将作为预编译头文件源。


1

你不需要它,但如果在创建项目时选择了“使用预编译头文件”,并且没有关闭相应的“创建/使用预编译头文件”编译器选项,则可能会导致编译失败。

预编译头文件是部分预处理或编译的头文件,以加速其余的编译过程。通常,如果要使用此功能,您可以将一堆#include语句放在stdafx.h中,用于系统头文件,这些头文件(几乎)所有项目文件都会使用。像<windows.h>这样的东西通常会被放在这里,还有MFC或ATL GUI库。您也可以将自己的头文件放在那里,但它们应该是很少更改的头文件。


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