从C函数返回链表结构

时间:2015-06-03 17:46:42

标签: 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 = 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;
}

实际上我在我的函数中尝试做的是创建新的链表,然后将新节点连接到它,并返回链表。

我尝试过的每个回复短语,并且我试过的外翻声明给我带来了同样的错误,有人可以帮助我吗?

3 个答案:

答案 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