warning à la compilation:

warning à la compilation: - C - Programmation

Marsh Posté le 19-12-2004 à 17:07:57    

Bonjour a tous, voila j'ai une fonction comme ceci:
 

Code :
  1. char *
  2. mystrchr(const char *s, int c)
  3. {
  4. while ( *s != c ){
  5.  if (*s == '\0')
  6.   return NULL;
  7.  *s++;
  8. }
  9. return s; //renvoi du pointeur  
  10. }


 
Or j'y fait appel comme ceci:

Code :
  1. if ( (ptr = mystrchr(src, c)) != NULL )
  2.         {
  3. ...
  4. }


 
Or le J'ai un warning a la compilation:
"attention : return annule des qualificateurs du type du pointeur cible
"
 
Il parle bien sur du 'return' de ma fonction..
 
Comment remédier à cela ? Est-ce nécessaire ?
 
Merci de vos reponses


Message édité par myeve le 19-12-2004 à 17:08:31
Reply

Marsh Posté le 19-12-2004 à 17:07:57   

Reply

Marsh Posté le 19-12-2004 à 17:23:25    

Je dirais que ta fonctin doit renvoyer un const char * puisque s est un const char *. Sinon le "*" dans "*s++" ne sert a rien et ne devrait pas être là.

Reply

Marsh Posté le 19-12-2004 à 17:23:33    

myeve a écrit :


Code :
  1. char *
  2. mystrchr(const char *s, int c)
  3. {
  4. <...>
  5. return s;
  6. }


 
Or le J'ai un warning a la compilation:
"attention : return annule des qualificateurs du type du pointeur cible
"
 
Il parle bien sur du 'return' de ma fonction..
 
Comment remédier à cela ?  


En étant cohérent :

Code :
  1. char const *
  2. mystrchr(const char *s, int c)


Citation :


Est-ce nécessaire ?


Oui, si on veut être cohérent.


Message édité par Emmanuel Delahaye le 19-12-2004 à 17:25:00

---------------
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 19-12-2004 à 18:18:14    

Emmanuel Delahaye a écrit :

En étant cohérent :
[cpp]
Oui, si on veut être cohérent.


on emploie la même notation dans ce cas là :D
 
mais sérieusement, c'est difficile de traiter ce cas là en C.
 
Parce qu'ici, on n'exprime pas 'my_strmachin ne modifie pas ma chaine', mais 'my_strmachin ne modifie pas ma même et renvoie une pointeur sur quelque chose de constant' ...

Reply

Marsh Posté le 19-12-2004 à 19:17:54    

ok merci beaucoup a tous..

Reply

Sujets relatifs:

Leave a Replay

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