Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
730 connectés 

  FORUM HardWare.fr
  Programmation
  C

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°964782
kaloskagat​os
Posté le 28-01-2005 à 16:29:30  profilanswer
 

: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. »
mood
Publicité
Posté le 28-01-2005 à 16:29:30  profilanswer
 

n°964794
++fab
victime du syndrome IH
Posté le 28-01-2005 à 16:38:23  profilanswer
 

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

n°964806
lsdYoYo
gravity powered
Posté le 28-01-2005 à 16:50:37  profilanswer
 

+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);

n°964824
++fab
victime du syndrome IH
Posté le 28-01-2005 à 17:03:08  profilanswer
 

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

n°964833
kaloskagat​os
Posté le 28-01-2005 à 17:11:14  profilanswer
 

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. »
n°964856
Emmanuel D​elahaye
C is a sharp tool
Posté le 28-01-2005 à 17:29:35  profilanswer
 

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/
n°964858
Emmanuel D​elahaye
C is a sharp tool
Posté le 28-01-2005 à 17:30:14  profilanswer
 

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/
n°964867
Emmanuel D​elahaye
C is a sharp tool
Posté le 28-01-2005 à 17:34:37  profilanswer
 

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/
n°964868
lsdYoYo
gravity powered
Posté le 28-01-2005 à 17:35:38  profilanswer
 

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

n°964880
kaloskagat​os
Posté le 28-01-2005 à 17:40:57  profilanswer
 

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. »

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

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

 

Sujets relatifs
[resolu][donnees] cherche bdd villeDésactiver le redimensionnement et la réduction d'une fenêtre [RESOLU]
[MFC/VC++] Problème de pointeurEndianness issue : warning sur cast de pointeur ?
[SQL/ADP] Appeler une fonction dans un EtatRetour d'une fonction [DEBUTANT]
ouvrir un formulaire en fonction d'une valeur[Résolu] Problèmes depuis reinstall PHP
[RESOLU]Probleme saut de page et colonnes 
Plus de sujets relatifs à : [C] Warning sur pointeur de fonction avec scandir (résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR