[問題] include <XXX.h> 與 include <XXX>差別?

看板C_and_CPP作者 (看不到夢想的我)時間12年前 (2013/08/16 06:58), 編輯推噓3(3010)
留言13則, 6人參與, 最新討論串1/1
我是使用Visual C++,想請問一個粗淺的小問題: 在C中,要使用輸出輸入,要include header file: stdio.h EX: #include <stdio.h> 在C++中,一樣的情形,一般都用 cin>> cout<<,所以要用: iostream。再搭配 using namespace std; EX: #include <iostream> using namespace std; 但我打開VC98 -> Include的資料夾,發現iostream這個header file的檔名是: IOSTREAM.H 可是: 如果我code是打: #include <iostream.h> using namesoace std; 會出現錯誤: 'std' : does not exist or is not a namespace 為何會這樣呢??? -- ╭──╮ q ˙ . ╭════╮ ◤◥◤◥ 此路不通 ││ ˙在 一 起 ╰═ ╤ ═╯ ◣ ◢ ﹕. ˙ ‧ ‧ ███ ψsleeeve ███ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.68.140

08/16 15:22, , 1F
VC++ 的 C++ 標頭檔是另外放的 在那裡會有個沒有副檔名的
08/16 15:22, 1F

08/16 15:23, , 2F
iostream 在 #include <iostream> 時會去抓那個
08/16 15:23, 2F

08/16 15:23, , 3F
不過在宣告 namespace std 之後馬上會回頭去引入 iostream.h
08/16 15:23, 3F

08/16 15:23, , 4F
也就是說兩者的差別僅在於有沒有 namespace std 而已
08/16 15:23, 4F

08/16 15:24, , 5F
現在建議使用有 namespace 的標頭檔 (即沒有 .h 的那個)
08/16 15:24, 5F

08/16 15:25, , 6F
有 .h 的那個應該是為了舊有程式的相容性的樣子
08/16 15:25, 6F

08/16 17:35, , 7F
我們可以問GNUGCC (欸
08/16 17:35, 7F

08/16 18:07, , 8F
了解!! 感謝L大^^
08/16 18:07, 8F

08/16 18:08, , 9F
沒差。
08/16 18:08, 9F

08/16 21:23, , 10F
哈~這個問題在於其實 namespace 是可以延伸定義的,iostream
08/16 21:23, 10F

08/16 21:24, , 11F
只是延伸定義了部分內容,iostream.h 這個檔案沒有 std 名稱
08/16 21:24, 11F

08/16 21:25, , 12F
空間所以編譯器會告訴你找不到 std 名稱空間.
08/16 21:25, 12F

08/17 22:57, , 13F
如果是Linux好像是在/usr/include/c++/$version/下
08/17 22:57, 13F
文章代碼(AID): #1I3SsJ6u (C_and_CPP)