[Visual Studio .NET 2003] Macro à plusieurs paramètres.

Résolu
meech Messages postés 209 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 14 août 2007 - 15 juin 2005 à 15:09
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 18 juin 2005 à 12:23
Bonjour,

J'essaie, en vain, de porter un code convenable compilable sous GCC 3.4 vers l'environnement Visual Studio .NET 2003.
Un proboème survient lors de déclaration de macro dont le nombre de paramètres est inconnu. Par exemple :
#define MACRO(x, ...) printf("%s\n", __VA_ARGS__)

1. Visual Studio ne reconnaît pas __VA_ARGS__.
2. Les pointillés provoquent l'erreur C2010 : vig.hpp(63): error C2010: '.' : inattendu dans la liste des paramètres formels d'une macro

En fait, je cherche à créer une macro dont le nombre d'arguments peut aller de 1 à n. Je suis surpris de ce problème, apparaissant uniquement sous Visual C++, car il me semblait que ceci faisait partie des spécifications ANSI.

Bref, l'un d'entre vous pourrait-il me proposer une solution "palliative" ?
Par avance, merci !

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 juin 2005 à 15:47
Ce que tu veux faire n'est possible qu'en C99, norme que VC++ ne respecte pas
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
15 juin 2005 à 18:09
Mais les fonctions sont capables de faire ça non ?
J'ai déjà vu plusieur fonction comme ça :
void Fonct(int a, ...)

Je sais pas si c'est ma mémoire qui me joue des tours :) Mais bon...
Passe par une fonction, au lieu d'une macro, ça reste quasiment pareil je suppose...


void Aurevoir( void ); //Bonne journée
3
meech Messages postés 209 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 14 août 2007
15 juin 2005 à 18:17
Salut,

Je confirme que les fonctions sont capables de faire cela. En l'occurrence, ceci ne m'est pas utile dans le cas précis : la macro ayant pour but elle-même de permettre la déclaration de fonctions...

En tout cas, merci à vous deux pour vos précisions.

A plus tard.
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 juin 2005 à 12:23
Apparemment tu pourrais utiliser le compilateur d'Intel, qui respecte le standard c99
0
Rejoignez-nous