[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
12
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
12
18 juin 2005 à 12:23
Apparemment tu pourrais utiliser le compilateur d'Intel, qui respecte le standard c99
0