2009-05-23 70 views
8

我有這個基本的疑問。 STL標頭沒有.h擴展名。爲什麼STL頭文件沒有擴展名?

#include <vector> 
#include <map> 

這背後有什麼具體原因嗎?任何人都知道背後的歷史,請分享。

編輯

@GMan發現Michael Burr's answer 它解決了這個問題。

+3

Duplicate:http://stackoverflow.com/questions/441568/when-can-you-omit-the-file-extension-in-an-include-directive – GManNickG 2009-05-23 09:42:20

+0

謝謝@GMan。我在SO和谷歌搜索沒有透露這一點。這是因爲相關的問題有點不同。無論如何,我覺得邁克爾伯爾的回答解決了我的問題。 – 2009-05-23 09:50:00

回答

8
  • #include指令不區分的文件類型(它只是一個華而不實的複製粘貼操作) - 沒有自動添加的.h的正在發生的事情。而不h擴展
  • 有時向後兼容性頭文件由供應商與h擴展提供具有相同名稱設置
  • C++標準頭文件添加

這一切都做與命名空間。用於C++標準報頭中的對應的.h通常來#include正確C++標準頭(無h擴展),然後發出一束使用(這樣的)的:

FILE:iostream.h

#include <iostream> 

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

而沒有.h擴展名的頭文件不會污染具有所有定義的類和類型的名稱空間。