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 を返します。


編集:

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 に答える