2014-03-12 83 views
2

我知道我們總是包含頭文件,那麼爲什麼我找到了一些頭文件一樣包括<x> VS包括<x.h>

#include<iostream> 

不帶擴展名爲.h但有些頭文件一樣

#include<windows.h> 

與.h擴展名,我也嘗試add.h到像iostream.h一些頭文件,但沒有奏效,所以添加.h擴展名時包含文件,而不是這樣做有什麼區別。

感謝所有回覆...非常感謝

+0

它沒有工作,因爲'iostream.h'不存在於你的系統上。沒有區別。 – gongzhitaao

+1

您需要提供文件的確切名稱。標準C++頭文件中沒有'.h'。但是,有一個文件'windows.h'。如果你創建自己的頭文件,你可以根據自己的喜好命名它們,但用'.h'結尾是常規約定。 – BoBTFish

+0

「爲什麼某些名字以y結尾,而另一些則以ie結尾?如果我寫吉米而不是吉米,那麼我就沒有匹配。」 –

回答

5

它只是取決於特定的標題。

標準庫頭(如<iostream>)沒有擴展名 - 只需使用名稱即可。

對於其他頭文件(嚴格來說,這些不應該被稱爲「頭文件」,而是「包含的源文件」),它是文件作者決定使用的任何文件。所以windows.h使用擴展.h。 Boost更喜歡.hpp的文件。 .hh.hxx通常也用於C++,但如果頭文件的作者決定使用myHeader.IamBob,你必須:

#include <myHeader.IamBob> 
1

你總是需要指定確切文件名。沒有「隱含的」.h。對於標準的一致性實現,C++庫沒有擴展。

因此

#include <iostream> 

是有效的,符合,而

#include <iostream.h> 

可以通過編譯器(或您的鄰居)被接受,但它是不可移植也不是保證與iostream相同或兼容。

+1

*而且''完全可能解決爲與「」不同的情況(例如,VC 6就是這種情況)。 「」類型的標頭是預標準實現,具有稍微不同的界面。 – Angew

+0

@Angew感謝您的信息。 – stefan

0

在1998年C++首次被標準化之前,iostream.h頭文件已經很普遍。但是自從98標準被使用而不是後者以來,後者已經不受歡迎(不標準和全部)並且不再被支持在所有平臺上。使用它的代碼應該被認爲是非標準的遺留代碼,並且不可移植。 包括<iostream>而不是<iostream.h>(後者已棄用)