[Résolu] warning: passing argument 5 of 'bsearch' from incom

boissonnfive
[Résolu] warning: passing argument 5 of 'bsearch' from incom

Bonjour,

j'ai le warning suivant et je n'arrive pas à m'en défaire:

Quote:
warning: passing argument 5 of 'bsearch' from incompatible pointer type

voici la ligne qui pose problème:

bsearch(id, textInformationFrame,                                                                              
              sizeof(textInformationFrame)/sizeof(textInformationFrame[0]),                                              
                   sizeof(textInformationFrame[0]), strcmp);

Si je comprends bien, c'est strcmp qui pose problème, mais pourquoi?
Sinon, comment se débarrasser de ce warning (ne plus le voir, avec un pragma par exemple...)?

NOTE:
fichier c compilé avec gcc (version 3 ou 4, je sais plus):
gcc -g -Wall -c file.c

Merci pour toute réponse ou tout début de piste.

fredericmazue

Quote:
Si je comprends bien, c'est strcmp qui pose problème,

C'est bien ça.

Quote:
mais pourquoi?

Parce que le pointeur de fonction censé être passé à bsearch doit pointer une fonction prototypée comme recevant des pointeurs constant void (const void *)
Alors que strcmp est prototypée comme recevant des pointeurs constant char (const char *)

Il n'y a pas concordance de types donc le compilateur émet un avertissement.

Quote:
Sinon, comment se débarrasser de ce warning

En transtypant vers le bon type de pointeur de fonction, comme ceci.
bsearch(id, textInformationFrame,                                                                             
              sizeof(textInformationFrame)/sizeof(textInformationFrame[0]),                                             
                   sizeof(textInformationFrame[0]), 
                                         (int(*)(const void *, const void *))strcmp);

:D

[private joke]
Ah m....., il y a plein de parenthèses dans ce que j'ai écrit là, je vais encore me faire engueuler par jrebillat :!: :twisted: :twisted: :twisted:
Damned :!: :lol: :lol: :lol:
[/private joke]

boissonnfive

Merci beaucoup, c'est ce que je voulais.

Merci de consacrer du temps à ces forum et d'aider les gens.

Youpi. :)
Bruno.