C语言编译报错问题
在C语言中,结构体是我们使用非常频繁的数据类型。
结构体中可以嵌套结构体,这可以给我们带来更丰富的用法。
但是我么在定义结构体的时候,要特别注意,声明结构体的顺序。
如果一个结构体中嵌套了一个结构体,那个被嵌套的结构体的声明需要在前面。
下面是代码演示
#include <stdio.h>
typedef struct {
A m;
int n;
}B;
typedef struct {
int a;
}A;
int main() {
B b;
return 0;
}
可以看到会报错,表明在结构体B中嵌套的结构体B不是一种数据类型。
当我们将代码变成下面
#include <stdio.h>
typedef struct {
int a;
}A;
typedef struct {
A m;
int n;
}B;
int main() {
B b;
return 0;
}
可以正常编译了。
在C语言中还是那句话,在使用某个变量、某种数据类型、某个函数的时候,我们一定要在使用之前对其进行声明或者定义。
如果是用的其他地方的变量或者函数,那就包含其头文件或者用extern来进行外部变量或外部函数声明。
如果是本源文件中使用的变量或函数,那就在前面进行定义即可。