2013-04-04 94 views
2

我是C++的初學者,我在這裏學習。C++:鏈接器子系統

首先,我在學校用Borland C++編寫了一些程序,但我的學校沒有Visual C++,我也沒有人教我如何用Visual C++編程。

的問題是,當我嘗試鏈接器子系統(項目設置)更改到Windows(/子系統:WINDOWS),我得到這個在輸出窗口:

1>------ Build started: Project: hew, Configuration: Debug Win32 ------ 
1> main.cpp 
1>c:\users\mxmike\documents\visual studio 2010\projects\hew\main.cpp(1): fatal 
error C1083: Cannot open include file: 'iostream.h': No such file or directory 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

我的代碼是非常簡單的:

#include <iostream.h> 
#include <stdlib.h> 

int main(int f) 
{ 
    int i=1; 
    return 1; 
} 

我簡直不明白。有人會如此善意向我解釋嗎?
謝謝您的閱讀!

+1

您應該'#包括'和''(不'.h') – 2013-04-04 20:34:05

+1

還是不提STD lib.h,在取其味,因爲沒有它聲明用來。這樣我就不必指出stdlib.h工作得很好。 – 2013-04-04 20:36:40

+0

您應該成功返回0。如果你離開它,'main()'會爲你做。如果你的編譯器也支持這個簽名,我會感到驚訝。它只需要支持'int main()'和'int main(int,char **)'。 – chris 2013-04-04 20:37:28

回答

3

沒有<iostream.h>標題。 I/O的標準庫標頭爲<iostream>。沒有一個C++標準庫頭以.h結尾。

確實存在以.h結尾的標題來自C標準庫。因此,例如,<stdlib.h>是一個C標準庫頭文件,爲。 C++標準確實可以使這些頭部可用,但它也提供了幾乎相同內容的替代方案。只需刪除.h並添加c即可。所以<stdlib.h>的C++版本是<cstdlib>

您是否確實需要<stdlib.h><cstdlib>的內容是另一回事。大多數功能都改進了C++特定頭文件中的C++對口。例如,這些C頭文件提供了malloc,但您應該在C++中使用new表達式。

另請注意,從main返回1通常是失敗的標誌。要表示成功執行,請改爲return 0;

+0

謝謝你幫助我。 – Michael 2013-04-04 20:48:47

1

在C++中有兩種標準類型的頭文件。那些從C派生的,如< stdlib.h>在C++中應該包含爲< cstdlib>(取掉.h和前綴爲ac)以及那些類似於< iostream>這是一個C++頭文件,用於替換C < stdio.h>。

你想要的是:

#include <cstdio> 
#include <cstdlib> 

#include <iostream> 
#include <cstdlib> 

,這取決於你在你的代碼中調用的功能/功能(在的情況下,你沒有提供這樣既應該工作)。

問候,

傑森斷定

+0

這些頭文件的C版本工作得很好。 – 2013-04-04 20:39:35

+0

@PeteBecker,當然可以,但最好使用C++版本和'std :: xxx'。 – chris 2013-04-04 20:40:29

+0

@chris - 您從使用C++版本中看到什麼好處?除了不必指出,他們提供完全相同的功能... – 2013-04-04 20:42:01