Re: [STL ] hash_map和VC 2005的問題

看板Programming作者時間18年前 (2006/11/16 15:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《Linvail.bbs@ptt.cc (平衡)》之銘言: > 我的環境是VC++ 2005 Express 和MS Platform SDK for Windows Server 2003 R2 這個環境我沒有用過。 > 我可以正常編譯和使用<vector> <algorithm>,但是include <hash_map>就會出現 你的標題有問題, hash_map 是你用的 library 自行製作的 extensions, 並不包含在 STL 裡面喔, 所以標 STL 是不適當的。 > 一大堆錯誤,錯誤都是出現在非我寫的那些檔案上 > 請問有沒有人能協助解決問題呢? > 例如我編譯以下MSDN提供的範例: > 在這些檔案上都有錯誤 xhash, hash_map, xlocinfo.h > 舉幾個在xhash上的錯誤: > C:\Program Files\Microsoft Visual Studio 8\VC\include\xhash(41) : error > C2143: 語法錯誤 : 遺漏 ';' (在 ''template<'' 之前) > C:\Program Files\Microsoft Visual Studio 8\VC\include\xhash(41) : error > C4430: 遺漏型別規範 - 假設為 int。注意: C++ 不支援 default-int 光是這樣看很像是你的 header file 內容有問題, 也有可能是因為你前面那個 #define 害 xhash 裡面的內容出問題, 建議你直接打開 xhash 這個檔案檢查看看是怎麼回事。 僅僅從錯誤訊息來看, C2143 所說的可能是前面的 class 定義式結尾少了分號, 或是前面的 variable/function 定義或宣告結尾少了分號什麼的; 而 C4430 這個錯誤是來自於 C 的寫法, 在 C 不寫出 type 的話預設就是 int type, 在 C++ 一定要寫明才行。 如果這些檔案其他人用都好好的, 就是只有你會出問題, 那就直接把出問題的檔案打開來看, 跳到 compiler 跟你說錯誤的那一行, 然後看看是不是有什麼 class 必須在那之前先定義, 而你那個 header file 裡卻沒有自己 #include 到, 這樣的話你就必須在 #include 這個 header file 之前先 #include 那些檔案, 這問題常發生在一些尚未成熟的 library 上; 另一種可能性是 header guard name 衝突, 就是每個檔案開頭的: #ifndef XXXXXX #define XXXXXX 你所 #include 的每個 header file 前面那個 XXXXXX 必須是獨一無二的; 最後一種可能性就是發生錯誤的附近有什麼條件式編譯命令, 也就是像這樣的東西: #ifdef XXXXXX 一些 code #endif 其它 code 而在你的環境中 XXXXXX 必須先被 #define 過才能正常編譯那個檔案, 但是因為某些原因你沒有 #define 到 XXXXXX 導致編譯錯誤, 反過來說如果那個 #ifdef 換成 #ifndef, 那就是原本可能 XXXXXX 在你的環境裡不應該被 #define, 而你卻 #define 了它, 所以就出現了錯誤, 這些情形都是比較常見的。 > // hash_map_count.cpp > typedef pair<int, int> Int_Pair; 標準 C++ 的 pair<> 是在 utility 這個 header file 裡定義的, 你若要使用 pair 建議上最好記得 #include <utility>, 即使你前面的 hash_map 或 iostream 可能間接幫你 #include 了也一樣。 其它部分還是要等有跟你一樣環境的人來回答, 才有辦法解決你的問題。 -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Tsing Hua University Department: Computer Science Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.252 > ╰─╮ ╚╦═╦╝ From:61-230-216-180.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩
文章代碼(AID): #15N1Fo00 (Programming)
文章代碼(AID): #15N1Fo00 (Programming)