頭文件有.h與沒.h的區別


簡單來說:

.h的是標准C的頭文件,沒有.h的是標准C++的頭文件,兩種都是頭文件。

造成這兩種形式不同的原因,是C++的發展歷史決定的,剛才正好有別的人也問這個問題,這里我再回答一下(注意vs2008和vs2005對標准C++的支持是一樣的):

以iostream和stdio.h為例,iostream是C++的庫,stdio.h是標准C的庫。

2、新的C++標准摒棄了.h形式的頭文件,所以在vs2005里面是沒有iostream.h的頭文件的。

3、在早期的vs版本,比如VC6.0,用的還是老版本的C++標准庫,例如iostream.h,並且當時標准庫也沒有引入名字空間。因此直接#include

<iostream.h>是可以的。但到了vs2005,使用了新的C++標准庫,只能用#include

<iostream>。

4、名字空間里可以包含很多東西,比如函數名、標識符、數據類型等等。新的C++標准把標准庫中的名字都放入了std名字空間,因此在#include

<iostream>之后,還必須使用標准庫的名字空間std,才能使用標准庫里的類和函數,也就是必須

using namespace std;

5、對於C的標准庫,例如,stdio.h,沒有名字空間的概念,因此直接包含后即可使用。

6、新的C++標准庫為了統一以前的C標准庫,將原來c的標准庫也放入了std名字空間,並把原來的C標准庫去掉了.h后綴,前面加上字母

“c”,例如stdio.h就變成了cstdio,使用時為#include

<cstdio>,其內容和#include

<stdio.h>相同,但是要額外使用名字空間std,也就是using

namespace std;

7、因此,對於新的C++標准庫,沒有了.h形式的頭文件,例如iostream,在包含了頭文件以后,必須使用std名字空間才能使用庫中的內容。對於C標准庫,有兩種使用方法,一種是用老的.h形式,例如stdio.h直接包含就可以了;另一種就是用C++的統一形式,例如cstdio,和

C++標准庫一樣,包含了以后還要加上using namespace std;才能使用。

8.頭文件用尖括號即<>與用雙撇號""的區別,用<>時,系統到存放在C/C++C庫函數頭文件的目錄中尋找要包含的文件,這稱為標准方式,用""時,系統先在用戶當前目錄中尋找要包含的文件,若找不到,再按標准方式查找。一般來說,如果要用到庫函數而包含相關的頭文件,則用<>,如果要包含的是用戶自己編寫的文件,一般用"",若文件不在當前目錄中,在""內應該給出文件路徑,例如:#include

"C:\wang\aa.ha"。

建議采用后面統一的形式,比如你要同時使用C和C++的庫,可以這樣寫:

#include

<cstdio>

#include

<iostream>

using namespace

std;



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com