Re: [STL ] hash_map和VC 2005的問題
※ 引述《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"的狂狷不馴;屬於年少的輕狂色彩 ◎
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章