看板Programming
标 题Re: [STL ] hash_map和VC 2005的问题
发信站政大狂狷年少 (Thu Nov 16 15:26:55 2006)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.ee.ttu!netnews.csie.nc
※ 引述《[email protected] (平衡)》之铭言:
> 我的环境是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: [email protected]
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"的狂狷不驯;属於年少的轻狂色彩 ◎