分类: C/C++
2010-04-21 15:59:28
1、expected unqualified-id before '''
引起该错误是因为:类或结构体的声明结尾“}”的后面没有分号。
还可能导致一个错误:一个声明指定了多个类型
解决办法:分别检查包含进来的文件,类声明,结构体声明后面有没有加分号。
2、expected initializer before '<' token
typedef void (*loader_function)(stream* input,int tag_type);
static hash_map
这是在使用hash_map等这些标准库容器时,编译器没有找到hash_map类型和相应的名字空间
3、undefined reference to `__gxx_personality_v0`
这是用gcc来编译*.cpp文件而引起的
解决方法:一 在用gcc编译时添加 -lstdc++ 选项
二使用g++编译
gcc默认*.cxx文件为c++文件 以下内容引用自gcc使用手册:
C和C++编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理(preprocessing),编译(compilation),汇编(assembly)和连接(linking).源文件后缀名标识源文件的 语言,但是对编译器来说,后缀名控制着缺省设定:
gcc
认为预处理后的文件(.i)是C文件,并且设定C形式的连接.
g++
认为预处理后的文件(.i)是C++文件,并且设定C++形式的连接.
源文件后缀名指出语言种类以及后期的操作:
.c C源程序;预处理,编译,汇编
.C C++源程序;预处理,编译,汇编
.cc C++源程序;预处理,编译,汇编
.cxx C++源程序;预处理,编译,汇编
.m Objective-C源程序;预处理,编译,汇编
.i 预处理后的C文件;编译,汇编
.ii 预处理后的C++文件;编译,汇编
.s 汇编语言源程序;汇编
.S 汇编语言源程序;预处理,汇编
.h 预处理器文件;通常不出现在命令行上
其他后缀名的文件被传递给连接器(linker).通常包括:
.o 目标文件(Object file)
.a 归档库文件(Archive file)