2009-05-23 14 views
8

私はこの基本的な疑いを持っています。 STLヘッダーには、.hという拡張子はありません。なぜSTLヘッダーファイルに拡張子がないのですか?

具体的な理由はありますか?誰もがこれの背後にある歴史を知っている、共有してください。

EDIT

@GManこの質問に対処しMichael Burr's answer を見つけました。

+3

重複:http://stackoverflow.com/questions/441568/when-can-you-omit-the-file-extension-in-an-include-directive – GManNickG

+0

ありがとう@GMan。 SOとGoogleで私の検索はこれを明らかにしなかった。リンクされた質問は少し違うからです。とにかく私はMichael Burrの答えが私の質問に対処していると感じます。 –

答えて

8
  • #includeディレクティブは、(それだけで見せかけのコピー・ペースト操作です)、ファイルの種類を区別しない - 何の自動が起こっているの.hを追加しません。
  • C++標準ヘッダファイルは拡張子.h
  • なしで提供されている時には、後方互換性のヘッダファイルは拡張子.hと同じ名前を持つベンダーから提供されているがそれはすべての名前空間に関係している

を追加しました。 C++標準ヘッダの.H対応は、通常(.H拡張子なし)適切なC++標準ヘッダの#includeした後(このようなもの)を使用しての束を発行:

#include <iostream> 

using std::iostream; 
using std::ostream; 
using std::ios; 
... 
でiostream.h:

ファイル

.h拡張子を持たないヘッダファイルは、すべての定義されたクラスと型で名前空間を汚染しません。

+3

iostream.hが存在しますか?私は8年間C++を使用していますが、私はそれを考えたことはありません... – Calmarius

関連する問題