mezaya
Messages postés202Date d'inscriptiondimanche 18 mai 2003StatutMembreDernière intervention 6 mars 2010
-
16 mai 2006 à 14:19
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 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 ?