Pouvez-vous m'aider sur une problématique que je n'arrive pas à résoudre ? Et merci de mettre des exemples concrets de solutions que vous pourriez me proposer.
J'ai écrit une lib et je la surveille en debug, ce qui m'a conduit à écrire une fonction DEBUG en variadique. Pour différentes raisons ma fonction doit être STATIC et il me faut donc passer par un wrapper, quelque chose comme ceci :
Code :
staticint _debug ( constchar * fmt, ... ) {
......
}
int debug( constchar * fmt, ... ) {
int ret;
va_list ap;
va_start( ap, fmt );
/* ret = _debug( fmt, va_arg( ap, void * ) ); */
ret = _debug( fmt, ap );
va_end( ap );
return ret;
}
Et c'est là que ça coince quelquefois, quand par exemple un entier issu d'une fonction est passé par adresse plutôt que par valeur. Soit je passe tout en pointeur (void *) et je ne résouds pas correctement ceux passés par valeur, soit je passe tout en direct (ap) et je ne résouds pas les pointeurs.
Je ne trouve pas de solution. Toute idée est la bienvenue. Merci.
Marsh Posté le 14-07-2011 à 11:07:08
Bonjour,
Pouvez-vous m'aider sur une problématique que je n'arrive pas à résoudre ? Et merci de mettre des exemples concrets de solutions que vous pourriez me proposer.
J'ai écrit une lib et je la surveille en debug, ce qui m'a conduit à écrire une fonction DEBUG en variadique. Pour différentes raisons ma fonction doit être STATIC et il me faut donc passer par un wrapper, quelque chose comme ceci :
Et c'est là que ça coince quelquefois, quand par exemple un entier issu d'une fonction est passé par adresse plutôt que par valeur.
Soit je passe tout en pointeur (void *) et je ne résouds pas correctement ceux passés par valeur, soit je passe tout en direct (ap) et je ne résouds pas les pointeurs.
Je ne trouve pas de solution.
Toute idée est la bienvenue.
Merci.