C++ 错误:‘;的类型冲突;recdisp’;void recdisp(结构节点*p)

C++ 错误:‘;的类型冲突;recdisp’;void recdisp(结构节点*p),c++,c,gcc,C++,C,Gcc,在main之前声明函数 解决方案 结构声明应该在函数声明之前 如果先声明函数会发生什么情况 由于没有声明结构,因此假定与函数关联的参数是某个东西。 稍后在声明了结构并定义了函数之后,编译器现在使用结构来关联函数,但它之前已经使用其他关联完成了此过程,因此需要重新声明,您使用哪个版本的GCC?我使用了(GCC)9.2.1 20190827,代码编译成功。在使用它的函数原型之前,您需要声明struct node(例如,将第一行下移一点)OT:您需要缩进代码。 void recdisp(struct

在main之前声明函数

解决方案

结构声明应该在函数声明之前

如果先声明函数会发生什么情况

由于没有声明结构,因此假定与函数关联的参数是某个东西。
稍后在声明了结构并定义了函数之后,编译器现在使用结构来关联函数,但它之前已经使用其他关联完成了此过程,因此需要重新声明,您使用哪个版本的GCC?我使用了(GCC)9.2.1 20190827,代码编译成功。

在使用它的函数原型之前,您需要声明
struct node
(例如,将第一行下移一点)OT:您需要缩进代码。
void recdisp(struct node* p);

struct node{
int data;

struct node* link;
};

struct node* head;

int main()
{

recdisp(head);

return 0;
}

void recdisp(struct node* p)
{

if(p==NULL)
return; 

recdisp(p->link);

printf("%d ",p->data);


}