2013-02-12 3 views
3

Désolé, cette question est trop simple. Je suis juste très frustré.Types incompatibles pour le retour

Lors de la compilation, je reçois l'erreur suivante:

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

Voici ma définition de la structure en haut de mon dossier, il pourrait être nécessaire de comprendre la fonction dans laquelle l'erreur se produit:

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

typedef struct string_linked_list SLL; 

Voici la fonction qui renvoie l'erreur. J'ai écrit la fonction pour simplement construire une liste singleton à des fins de test.

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

Avez-vous une idée de ce que le problème pourrait être?

+0

Quel est le type de retour de 'makeSingleton'. est-ce que c'est "SLL *"? – Ganesh

+0

Je suis désolé, j'ai mal interprété mon code. J'ai inclus SLL, mais j'ai oublié le *, est-ce nécessaire? –

+1

Oui. le type de retour est un pointeur et par conséquent, vous devez inclure '' SLL * ' – Ganesh

Répondre

2

la fonction a un implicite retourner le type de int, tandis que vous renvoyez SLL * également essayer d'éviter de nommer les variables "nouveau"

5

Vous devez spécifier le type de retour:

SLL* makeSingleton() 
{ 

Si vous ne spécifiez pas, en C, la fonction par défaut de retourner int.


Edit:

Compte tenu de votre nouvelle édition, le problème est que vous devez faire le type de retour SLL*, non SLL:

SLL* makeSingleton() 
+0

Merci beaucoup, Reed! Je ne sais pas comment j'ai oublié ça! –

2

Dans votre programme, le type de retour est un pointeur et par conséquent, l'empreinte du programme doit être SLL* makeSingleton