De la “conflicting types de fonction” en C, pourquoi?

Je suis en utilisant le code ci-dessous:

char dest[5];
char src[5] = "test";

printf("String: %s\n", do_something(dest, src));

char *do_something(char *dest, const char *src)
{
    return dest;
}

La mise en œuvre de do_something n'est pas important ici.
Lorsque j'essaie de compiler le ci-dessus, je reçois ces deux exceptions:

erreur: conflicting types for 'faire_quelque_chose" (à l'printf appel)

erreur: la précédente déclaration implicite de "faire_quelque_chose' était ici (à la ligne prototype)

Pourquoi?

  • J'ai été faire cette même erreur, mais je n'étais pas à l'appel de la fonction n'importe où, pourtant, ni avant, ni après sa définition), donc la réponse choisie n'était pas applicable dans mon cas. S'avère que le problème était dû à un conflit de noms - mon nom de la fonction, a été "mergesort" (je suis en train de suivre avec Skiena de "la Conception d'un Algorithme Manuel") et il y a déjà un nom identique fonction dans stdlib.h. Renommer ma fonction merge_sort" a fait le tour.
InformationsquelleAutor goe | 2009-10-11