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