我创建了以下链表结构:
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;
}
实际上我在我的函数中尝试做的是创建新的链表,然后将新节点连接到它,并返回链表。
我尝试过的每个回复短语,并且我试过的外翻声明给我带来了同样的错误,有人可以帮助我吗?
答案 0 :(得分:4)
在if语句的末尾有一个额外的大括号。返回不在函数中。
答案 1 :(得分:0)
这是我在复制函数时犯的错误,在我的代码中,返回状态正确定位,我仍然遇到同样的问题。 我已经纠正了原始邮件中的问题。
答案 2 :(得分:0)
可能是您在声明之前尝试使用该功能。例如,假设你有:
int func1()
{
prinft("%d\n", func2());
}
double func2()
{
return 1.0;
}
如果没有为“func2”创建function prototype,则编译器会假定该函数具有整数返回类型。当然它并不是真的,但是因为编译器在调用之前没有看到func2(),所以它对返回类型做出了错误的假设。在您的代码中,您可以在定义之前调用“函数”函数。您可以使用函数原型来解决这个问题,这基本上是一种告诉编译器期望函数类型的方法:
//Function prototypes
int func1();
double func2();
int func1()
{
prinft("%d\n", func2());
}
double func2()
{
return 1.0;
}
另请参阅:conflicting types error when compiling c program using gcc