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

  FORUM HardWare.fr
  Programmation
  C

  [C] Surcharge

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Surcharge

n°2047673
Anonymouse
Posté le 09-01-2011 à 17:59:40  profilanswer
 

Bonsoir,
 
Quelqu'un sait comment est implémenté la surcharge de fonction en C?
 

Code :
  1. #include <sys/types.h>
  2. #include <sys/stat.h>
  3. #include <fcntl.h>
  4. int open(const char *pathname, int flags);
  5. int open(const char *pathname, int flags, mode_t mode);

mood
Publicité
Posté le 09-01-2011 à 17:59:40  profilanswer
 

n°2047676
xilebo
noone
Posté le 09-01-2011 à 18:05:05  profilanswer
 

Je ne pense pas que cela puisse fonctionner, car la surcharge en C++ vient du fait que le compilateur différencie 2 fonctions non pas par leurs noms, mais leurs noms + les paramètres ( exclu le paramètre de retour ), ce qui n'est pas le cas d'un compilateur C.
 
Après, un compilateur pourrait l'implémenter mais cela ne fait pas partie du standard C à ma connaissance, ceci provoquerait donc l'écriture d'un code non standard et non portable (je vois bien microsoft faire ça :p ).
 

n°2047677
gilou
Modérateur
Modzilla
Posté le 09-01-2011 à 18:05:52  profilanswer
 

Il n'y a pas de surcharge de fonctions en C.  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2047678
Anonymouse
Posté le 09-01-2011 à 18:22:20  profilanswer
 

Les fonctions open dont j'ai donné le manpage, implémentent la surcharge.  
 
Il doit y avoir une astuce  [:figti] .

Message cité 1 fois
Message édité par Anonymouse le 09-01-2011 à 18:22:41
n°2047680
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 09-01-2011 à 18:38:40  profilanswer
 

Anonymouse a écrit :

Les fonctions open dont j'ai donné le manpage, implémentent la surcharge.  
 
Il doit y avoir une astuce  [:figti] .


va_args ?


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2047681
Un Program​meur
Posté le 09-01-2011 à 18:38:45  profilanswer
 

Il n'y a pas de surcharge en C, ni d'argument par défaut.  Le vrai prototype de open est

Code :
  1. int open(const char*, int, ...);


mais les manpage donnent les deux cas possibles.  Les flags indiquent dans lequel on se trouve.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2047682
kadreg
profil: Utilisateur
Posté le 09-01-2011 à 18:39:56  profilanswer
 

parce que la manpage présente une API logique, et pas la vraie API :D

 
Code :
  1. extern int open (__const char *__file, int __oflag, ...) __nonnull ((1));
  2. #else
  3. # ifdef __REDIRECT
  4. extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64)
  5.      __nonnull ((1));
  6. # else
  7. #  define open open64
  8. # endif
  9. #endif
  10. #ifdef __USE_LARGEFILE64
  11. extern int open64 (__const char *__file, int __oflag, ...) __nonnull ((1));
  12. #endif
 

c'est une varargs, comme printf :D

 

edit : [:benou_grilled]


Message édité par kadreg le 09-01-2011 à 18:40:17

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2047685
Anonymouse
Posté le 09-01-2011 à 18:52:01  profilanswer
 

Ok merci à tous


Message édité par Anonymouse le 09-01-2011 à 19:49:08

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

  [C] Surcharge

 

Sujets relatifs
Gestion d'évenement en C#[C++] tableau de classe dans une autre classe ?
Langage C : Exercice sur les filesdessiner des graphes en C++ avec SDL
Programmer en C une fonction d'interruption pour dsp[C] afficher un caractère grec
Génerer un pdf en C#traitement un fichier de données en C++
[C++/CLI] Surcharge de constructeur[C#] Surcharge accesseur SET
Plus de sujets relatifs à : [C] Surcharge


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