2011-08-31 152 views
46

我想在C++中编译一个简单的VS程序作为类的赋值。我们永远只包括和我不断收到此错误:如何避免预编译头文件

1>Assignment.cpp(15): fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?

我的计划是从字面上这个小...

#include <iostream> 
using namespace std; 
int main() 
{ 
    unsigned int day = 30; 

    cout << "My Name is John Doe" << endl; 
    cout << "My Major is CS" << endl; 
    cout << "I was born on day " << day << endl; 
    return 0; 
} 

我刚安装了Visual Studio Express的2010年。我真的很想开始空项目而不是安装所有这些预定义的文件,我认为这会让它变得更容易,但是在创建项目时我从来没有得到过这个选项。任何人有任何建议?

+11

您需要在项目设置中关闭预编译头的使用(您也可以在将来创建新项目时取消选中使用预编译头文件。) – user168715

+0

如何关闭未来项目的关闭功能? –

+0

请改善您的问题标题。它没有描述这个问题,而是列出了技术(这是标签的用途)。 –

回答

58

您可以随时在项目设置中禁用预编译头文件。

说明VS 2010(应为VS的其他版本类似):

Select your project, use the "Project -> Properties" menu and go to the "Configuration Properties -> C/C++ -> Precompiled Headers" section, then change the "Precompiled Header" setting to "Not Using Precompiled Headers" option.


如果你只是想设置为简单的C++的命令行程序最小的Visual Studio项目(如如在介绍性的C++编程类中开发的那些),您可以创建一个empty C++ project

+0

请参阅我试过但我没有看到“Press Enter To Continue”默认打印字符串时。这是相当烦人的。 –

+2

@Howdy_McGee'std :: cout <<“按Enter继续”<< std :: endl; std :: cin.get();'应该让你到那里。 –

+0

有没有办法让我在默认情况下发生?在课堂上,我们永远不需要添加任何额外的代码来让新闻输入继续字符串。 –

5

.cpp文件被配置为使用预编译头,因此必须首先包含它(在iostream之前)。对于Visual Studio,它的名称通常是“stdafx.h”。

如果项目中没有stdafx *文件,则需要转到此文件的选项并将其设置为“不使用预编译头文件”。

+0

如何关闭预定义标题? –

+0

右键单击.cpp文件并选择Properties,然后在树视图中找到C/C++/Precompiled Headers并更改预编译头选项。 – hamstergene

+0

也很方便的是大众选择 +鼠标左键选项。在解决方案资源管理器中选择一堆_cpp_源文件,然后如上关闭。 –

0

尝试之前#include "iostream"

+0

这是一个班级任务 - 我只允许使用iostream,所以这个解决方案不会工作 –

+1

@Howdy:在技术上,谢尔盖是正确的;你已经创建了一个项目集来使用一个预编译头文件,但是你不会'#include'它。你真正需要做的是创建一个空的项目或删除对预编译头文件的依赖。 –

+0

@Ed S .:虽然它是正确的,但它只能修复症状。隐藏的问题是“为什么我不能编译我在课堂上编译的同一个程序”?而*问题的答案是“在课堂上,该项目没有使用预先编译的标题”。 –

9

添加#include "stdafx.h"您可以创建从“常规”组中的Visual C++项目中选择“空项目”的空项目(也许是项目模板中不包括Express吗?) 。

要解决你已经有项目的问题,打开项目属性,并导航到:

Configuration Properties | C/C++ | Precompiled Headers 

,并选择“不使用预编译头”为“预编译头”选项。

+0

根据http://msdn.microsoft.com/en-us/library/ms235516%28v=VS.100%29.aspx,空项目模板使用Express。让我知道如果它不显示给你。我发现最好使用任何其他项目模板来建立一个快速的,非常脏的,小型的,独立的测试项目。 –