今天遇到这么一个问题,一个结构体编译报错,“重定义;不同的基类型”,这个结构体在一个头文件中定义,在两个cpp文件中包含该头文件,就报这个错误,结构体的定义形式为:
typedefine struct strct{
int x;
int y;
} stt;
将结构体的定义形式改为如下方式,错误排除:
struct stt{
int x;
int y;
};
分析:第一种定义方式为C语言定义,第二种为C++定义,C++ struct 等同于类,因此第二种形式相当于是一种声明,所以不会报错,而C语言则会报重定义错误。