2011-08-31 209 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。讓我知道如果它不顯示給你。我發現最好使用任何其他項目模板來建立一個快速的,非常髒的,小型的,獨立的測試項目。 –