Surcharge de fonction en C...

vinc1008881
Messages postés
257
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
29 septembre 2010
- 9 mars 2008 à 13:14
SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
- 9 mars 2008 à 18:52
Bonjour à tous,

je voudrais surcharger des fonctions en C comme on le fait en C++. Seulement le compilateur refuse (normal) et je voudrais savoir s'il n'existe pas des moyens détournés pour faire celà (pointeur sur fonction ? macro ?)

J'utilise gcc comme complilo, merci à l'avance pour vos réponses.

Cordialement

1 réponse

SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
9 mars 2008 à 18:52
Non. C'est le compilateur C++ qui redirige, à partir de la signature de la fonction appelée, vers la bonne fonction. Comme un compilateur C ne connaît pas ce qu'est la surcharge, il est donc impossible d'appliquer ce principe.

Un moyen serait de passer un flag à une fonction prenant un nombre indéfini d'argument, mais ce n'est pas du tout le même principe.

Exemple:

void __cdecl toto (int flag, ...)
{
    va_list l;

    va_start(l, flag);

    switch(flag) {
       case 1: {
          int i = va_arg(l, int);
          printf("%d\n", i);
       } break;
       case 2: {
          char *c = va_arg(l, char*);
          int i = va_arg(l, int);
          printf("%s -> %d\n", c, i);
       } break;
    }
}
         

C++ (@++)<!--
0