[C] Warning sur pointeur de fonction avec scandir (résolu)

Warning sur pointeur de fonction avec scandir (résolu) [C] - C - Programmation

Marsh Posté le 28-01-2005 à 16:29:30    

:hello:
 
Je voudrais me débarrasser d'un warning:
AVERTISSEMENT: passage de arg 3 de « scandir » d'un type pointeur incompatible

 
Appel de scandir:

Code :
  1. static int ppm (struct dirent *file_string)
  2. { ...
  3. void fonction()
  4. {
  5. struct dirent **eps;
  6. int n;
  7.  
  8. n = scandir (directory, &eps, ppm, alphasort);
  9. }


 
 
Le man:


#include <dirent.h>
 
int scandir (const char * dir, struct dirent ***namelist,
       int (*select)(const struct diren t *),
       int (*compar)(const struct dirent **, const struct dirent **));
 
       int alphasort (const void *a, const void * b);
       int versionsort (const void *a, const void * b);


 
L'appel fonctionne parfaitement, je voudrais juste savoir si il faut caster, et comment, pour faire disparaitre le warning.
 
Merci d'avance :)


Message édité par kaloskagatos le 28-01-2005 à 17:11:26

---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
Reply

Marsh Posté le 28-01-2005 à 16:29:30   

Reply

Marsh Posté le 28-01-2005 à 16:38:23    

ba ppm n'a pas le prototype adequat, il manque un const non ?

Reply

Marsh Posté le 28-01-2005 à 16:50:37    

+1. Si tu veux caster, ça va donner une horreur de ce style :

Code :
  1. n = scandir (directory, &eps, (int (*)(const struct dirent *)) ppm, alphasort);

Reply

Marsh Posté le 28-01-2005 à 17:03:08    

kaloskagatos a écrit :

:hello:
 
Je voudrais me débarrasser d'un warning:
AVERTISSEMENT: passage de arg 3 de « scandir » d'un type pointeur incompatible

 


 
tiens on parlait y a pas longtemps des messages d'erreurs en français, t'as pas la VO pour pas te faire envoyer paitre  :D

Reply

Marsh Posté le 28-01-2005 à 17:11:14    

En rajoutant le const ça change rien :??:
En castant ça marche :) Merci!
 
 
Pour le compilo en français c les machines de la fac, bon je pourrais installer mon propre compilo mais bon, voilà quoi :D
 
 
Encore merci :jap:


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
Reply

Marsh Posté le 28-01-2005 à 17:29:35    

kaloskagatos a écrit :


 
Je voudrais me débarrasser d'un warning:
AVERTISSEMENT: passage de arg 3 de « scandir » d'un type pointeur incompatible

 
Appel de scandir:

Code :
  1. static int ppm (struct dirent *file_string)
  2. { ...
  3. void fonction()
  4. {
  5. struct dirent **eps;
  6. int n;
  7.  
  8. n = scandir (directory, &eps, ppm, alphasort);
  9. }


 
 
Le man:


#include <dirent.h>
 
int scandir (const char * dir, struct dirent ***namelist,
       int (*select)(const struct diren t *),
       int (*compar)(const struct dirent **, const struct dirent **));


 
L'appel fonctionne parfaitement, je voudrais juste savoir si il faut caster, et comment, pour faire disparaitre le warning.


'cast is evil'
 
Le parametre 3 doit être une fonction de type

int f(const struct diren t *)

 
et tu lui fournis

static int ppm (struct dirent *file_string)


manque un 'const' :

static int ppm (struct dirent const *file_string)



---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 28-01-2005 à 17:30:14    

lsdyoyo a écrit :

+1. Si tu veux caster, ça va donner une horreur de ce style :

Code :
  1. n = scandir (directory, &eps, (int (*)(const struct dirent *)) ppm, alphasort);



Heureusement, il y a les 'typedef'...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 28-01-2005 à 17:34:37    

kaloskagatos a écrit :

En rajoutant le const ça change rien


Montre le code...

Citation :

En castant ça marche


 :non:


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 28-01-2005 à 17:35:38    

Sûr, mais j'y vais en douceur.

Reply

Marsh Posté le 28-01-2005 à 17:40:57    

au temps pour moi ça marche avec le const :jap:
 
Je file me fouetter.


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed