vinc1008881
Messages postés257Date d'inscriptiondimanche 22 août 2004StatutMembreDernière intervention29 septembre 2010
-
9 mars 2008 à 13:14
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 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.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 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;
}
}