Fonction à paramètres illimités

Signaler
Messages postés
306
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
15 février 2016
-
Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
-
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

Messages postés
694
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
15
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()