从C函数返回链表结构
我创建了以下链表结构:从C函数返回链表结构,c,pointers,struct,linked-list,typedef,C,Pointers,Struct,Linked List,Typedef,我创建了以下链表结构: struct node { struct data *data; struct node *next; }; 我的问题是,当我试图创建一个返回此链表结构的函数时,会收到以下错误消息: "Conflicting types for 'function'". 我的函数如下所示: struct list_node *function(location piece){ struct list_node *details; details =
struct node {
struct data *data;
struct node *next;
};
我的问题是,当我试图创建一个返回此链表结构的函数时,会收到以下错误消息:
"Conflicting types for 'function'".
我的函数如下所示:
struct list_node *function(location piece){
struct list_node *details;
details = malloc( sizeof(struct list_node) );
details->next = NULL;
details->current = NULL;
if (global_var == WHITE_M){
struct list_node *temp;
temp = malloc( sizeof(struct list_node) );
data new_data;
*temp->data = new_data;
temp->next = malloc( sizeof(struct list_node) );
temp->next = details;
details = temp;
}
return details;
}
实际上,我在函数中要做的是创建新的链表,然后将新节点连接到它,然后返回链表
我尝试过的每个返回短语,以及我尝试过的evert声明都会导致相同的错误,有人能帮我吗?在if语句的末尾有一个额外的大括号。返回值不在函数中。if语句末尾有一个额外的大括号。返回不在函数中。这只是我在这里复制函数时犯的一个错误,在我的代码中返回状态是正确的,我仍然有相同的问题。
我已经更正了原始消息中的问题。这只是我在这里复制函数时犯的一个错误,在我的代码中,返回状态是正确的,我仍然有相同的问题。
我已更正了原始消息中的问题。可能是您试图在声明函数之前使用该函数。例如,假设您有:
int func1()
{
prinft("%d\n", func2());
}
double func2()
{
return 1.0;
}
如果您没有为“func2”创建一个函数,那么编译器将假定该函数具有整数返回类型。当然它不是真的,但是因为编译器在调用func2()之前没有看到它,所以它对返回类型做出了错误的假设。在代码中,可以在定义“函数”之前调用它。您可以使用函数原型来解决这一问题,这基本上是一种告诉编译器所需函数类型的方法:
//Function prototypes
int func1();
double func2();
int func1()
{
prinft("%d\n", func2());
}
double func2()
{
return 1.0;
}
另外,请参阅:可能是您试图在声明函数之前使用该函数。例如,假设您有:
int func1()
{
prinft("%d\n", func2());
}
double func2()
{
return 1.0;
}
如果您没有为“func2”创建一个函数,那么编译器将假定该函数具有整数返回类型。当然它不是真的,但是因为编译器在调用func2()之前没有看到它,所以它对返回类型做出了错误的假设。在代码中,可以在定义“函数”之前调用它。您可以使用函数原型来解决这一问题,这基本上是一种告诉编译器所需函数类型的方法:
//Function prototypes
int func1();
double func2();
int func1()
{
prinft("%d\n", func2());
}
double func2()
{
return 1.0;
}
另外,请参见:函数的定义是否与声明匹配?显示声明。您的第一个结构名为“node”。函数返回“list\u node*”在使用函数之前,您是否定义/声明了函数?大多数(全部?)编译器会给你一个隐式函数类型,然后抱怨类型不匹配;函数在return语句之前关闭,因此您可能需要验证您发布的源代码。在
malloc
调用中也有一个struct moves\u list\u节点
,但随后将该指针指定给一个list\u节点*
这是声明:struct list\u node*函数(位置块),在将函数复制到此处时,我将一些“节点”与“列表节点”混淆了,但现在看来还可以。函数的定义与声明匹配吗?显示声明。您的第一个结构名为“node”。函数返回“list\u node*”在使用函数之前,您是否定义/声明了函数?大多数(全部?)编译器会给你一个隐式函数类型,然后抱怨类型不匹配;函数在return语句之前关闭,因此您可能需要验证您发布的源代码。您在malloc
调用中也有一个struct moves\u list\u节点
,但随后将该指针指定给一个list\u节点*
这是声明:struct list\u node*函数(位置块),在将函数复制到此处时,我将一些“节点”与“list\u节点”混淆,但现在看来还可以。您是指“括号”吗而不是“括号”?谢谢。实际上,我指的是大括号。:-)已编辑。你是说“括号”而不是“括号”?谢谢。实际上,我指的是大括号。:-)编辑。