Macro et template

Résolu
mezaya Messages postés 202 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 6 mars 2010 - 16 mai 2006 à 14:19
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 16 mai 2006 à 17:36
Bonjour à tous,

j'ai un problème avec le préprocesseur c et l'utilisation de template.
je n'arrive pas à résoudre le problème suivant :

j'ai une macro :
#define MACRO(type) \
...blabla

une template :
template< class T, int n>
class A { ... };

et puis j'utilise ma macro:
MACRO( A<char,25> )

et la une erreur survient à la compilation disant que la macro accepte 1 argument et pas 2. Ici le parseur de la macro n'arrive pas a faire la différence entre la ',' qui sépare les différent type du template et la ',' qui sépare les arguments de la macro.

la solution qui utilise des parenthèses --> MACRO( (A<char,25) ) ne marche pas car je crée dans la macro une fonction et les fonctions du type --> void test( (int) a ) ne compile pas non plus.

la seul solution trouvé pour l'instant consite a faire :
#define COMMA ,
puis
MACRO( A<char COMMA 25 > )

ça marche mais ce n'est pas très élégant. Alors, existe il un moyen plus élégant d'écrire la macro ?

pour info je suis sous Visual C++ 2003

Voili,Voilou [;)]

1 réponse

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
16 mai 2006 à 17:36
Tu peux passer par un typedef



typedef A<char, 25> Achar25;



MACRO( Achar25 );
3
Rejoignez-nous