2012-03-22 72 views
0

我試過在C++中做一個簡單的Hello World,因爲我將在大約一個星期內在學校使用它。爲什麼我不能正確編譯它?爲什麼這個程序不能工作?

c:\Users\user\Desktop>cl ram.cpp 
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86 
Copyright (C) Microsoft Corporation. All rights reserved. 

ram.cpp 
ram.cpp(1) : fatal error C1083: Cannot open include file: 'iostream.h': No such 
file or directory 

c:\Users\user\Desktop> 

這裏是ram.cpp

#include <iostream> 

int main() 
{ 
    cout << "Hello World!"; 
    return 0; 
} 

編輯:

我更新了我的代碼

#include <iostream> 
using namespace std; 

int main(void) 
{ 
    cout << "Hello World!"; 
    return 0; 
} 

,仍然可以得到這個錯誤

ram.cpp 
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\xlocale(323) : wa 
rning C4530: C++ exception handler used, but unwind semantics are not enabled. S 
pecify /EHsc 
Microsoft (R) Incremental Linker Version 10.00.30319.01 
Copyright (C) Microsoft Corporation. All rights reserved. 

/out:ram.exe 
ram.obj 
+2

不會向我們展示'ram.cpp'嗎? – asawyer 2012-03-22 21:57:56

+0

對不起,我將它添加到 – netbyte 2012-03-22 22:18:13

+0

你是否正在從一個正常的命令提示符或Visual Studio命令提示符運行此設置所有環境變量設置? – tinman 2012-03-22 22:41:49

回答

9

編譯器告訴你爲什麼:

ram.cpp(1):致命錯誤C1083:無法打開包含文件: 'iostream.h':沒有這樣的 文件或目錄

你不不要使用.h。只需使用

#include <iostream> 

A long winded explanation with a lot of background can be found here.

根據您的意見,您需要購買一本新書。你的過時太糟糕了,甚至沒有提到命名空間!爲了讓你的程序工作,試試這個:

#include <iostream> 

int main() 
{ 
    std::cout << "Hello World!"; 
    return 0; 
} 

cout生活在std命名空間。

如果它成爲累贅鍵入std::的時候則可以導入類型整個文件像這樣:

using std::cout; 

現在你可以只寫cout代替。您也可以導入整個名稱空間,但這通常是不好的做法,因爲您將整個事件拖入全局名稱空間,並且您可能會遇到碰撞事故。但是,如果這是你知道會不會是一個問題的東西(例如,在一個一次性的應用程序或小程序),那麼你可以使用此行:

using namespace std; 
+0

感謝您的鏈接解釋 – antlersoft 2012-03-22 22:02:27

+0

謝謝。但現在我得到這個錯誤 c:\ Users \ alex \ Desktop> cl ram。cpp Microsoft(R)32位C/C++優化編譯器版本16.00.30319.01,用於80x86 版權所有(C)Microsoft Corporation。版權所有。 ram.cpp C:\ Program Files文件(x86)\ Microsoft Visual Studio 10.0 \ VC \ INCLUDE \ xlocale(323):wa rning C4530:使用C++異常處理程序,但unwind語義未啓用。 S pecify/EHsc ram.cpp(4):錯誤C4430:缺少類型說明符 - int假定。注意:C++不支持default-int ram.cpp(5):錯誤C2065:'cout':未聲明的標識符 – netbyte 2012-03-22 22:11:43

+1

@netbyte:'cout'在命名空間'std'中。你正在閱讀的是什麼書,它向你展示了舊的標題和非命名空間符號,將它放下。燒了吧。 [獲取更好的書](http://stackoverflow.com/q/388242/636019)。 – ildjarn 2012-03-22 22:18:32

5

它不叫「iostream.h」,並它從來沒有。使用#include <iostream>

+3

在ISO之前,很多舊書都使用這些標題。 – ildjarn 2012-03-22 22:00:46

1

正確的代碼應該是

無論本書在2003年之前已經寫
#include <iostream> 

int main() 
{ 
    std::cout << "Hello World!" << std::endl; 
    return 0; 
} 

,是沒有意識到這一點。 只要把它扔掉。在此期間,世界已經搬到了別的地方!

+0

你怎麼能不用每次都記住std呢? – netbyte 2012-03-22 23:01:40

+0

@netbyte:'std'是一個名字空間,你不要「叫」它。請參考我對埃德關於獲得一本真實書籍的回答的評論。 ; - ] – ildjarn 2012-03-23 00:32:35

相關問題