3

对不起,如果这是一个过于简单的问题。我只是非常沮丧。

编译时,我收到以下错误:

sll.c:129: error: incompatible types in return

这是我文件顶部的结构定义,可能有必要了解发生错误的函数:

struct string_linked_list {
   char *s;
   struct string_linked_list *next;
};

typedef struct string_linked_list SLL;

这是返回错误的函数。我编写了这个函数来简单地构建一个用于测试目的的单例列表。

SLL makeSingleton()
{
    SLL * new= (SLL *) malloc( sizeof(SLL));
    char*sp = strdup("test");
    new->s = sp;
    new->next = NULL;
    return new;
}

你知道问题可能是什么吗?

4

3 回答 3

5

您需要指定返回类型:

SLL* makeSingleton()
{

如果你不指定这个,在 C 中,函数将默认返回 int。


编辑:

鉴于您的新编辑,问题是您需要返回 type SLL*,而不是SLL

SLL* makeSingleton()
于 2013-02-12T00:05:57.817 回答
2

在您的程序中,返回类型是一个指针,因此,程序的足迹应该是SLL* makeSingleton

于 2013-02-12T00:09:28.997 回答
2

该函数具有 int 的隐式返回类型,当您返回 SLL* 时,还尽量避免将变量命名为“new”

于 2013-02-12T00:11:13.720 回答