Fonction à paramètres illimités

K@zuya Messages postés 306 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 15 février 2016 - 9 mai 2006 à 17:53
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 - 9 mai 2006 à 18:16
Bonjour,

voila, j'ai fait une fonction qui utilise les fameux paramètres illimités:

mafonction(int nargs,...)

et j'envoie des structures en paramètres

struct MA_STRUCT
{
blabla....
}

MA_STRUCT a,b,c;

mafonction(3,a,b,c);

puis ensuite je récup les paramètres comme ceci:

MA_STRUCT* args = (MA_STRUCT*)(&nargs + sizeof(nargs));

ça marche tres bien avec visual studio, pas de souci, mais avec devcpp pas moyen, mon args pointe nimporte où mais pas au bon endroit en tout cas, alors comment les arguments sont ils envoyés avec le compilo de devcpp, ils ne sont pas les uns apres les autres dans la mémoire ? comment connaitre leur adresse ?
merci.

K@zuya

1 réponse

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
9 mai 2006 à 18:16
MA_STRUCT* args = (MA_STRUCT*)(&nargs + sizeof(nargs));

Tu suppose que ton compilateur range les arguments dans la pile d'execution toujours dans le même ordre. Or tout les compilateurs ne font pas pareils.

il faut utiliser les fonctions va_start(), va_arg() et va_end()
0
Rejoignez-nous