Macro et tableau

Résolu
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 16 juin 2005 à 14:56
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 16 juin 2005 à 18:57
Bonjour, le code suivant me pose problème:



#define INIT(name, val) int name[] = val

int main()

{

INIT(a, {2, 3});

}



warning C4002: trop de paramètres réels pour la macro 'INIT'

error C2143: erreur de syntaxe : absence de '}' avant ';'



C'est donc {2, 3} qui doit compter pour plusieurs, pourtant c'est une entité... Quelqu'un voit comment faire?

7 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
16 juin 2005 à 15:46
oui?

la virgule est un separateur, t'auras du mal a passer un argument qui comporte une virgule ...

#define INIT(name, val) int name[] = val

int main()

{

#define arg {2,3}

INIT(a, arg);

}



ok c'est plus chiant a utiliser (voire ca devient inutile) mais au- ya pas de pb de syntaxe
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 15:56
En effet ca devient inutile

Une autre belle solution:



#define INIT(name, val) int name[] = val



int main()

{

#define VIRGULE ,

INIT(a, {2 VIRGULE 3});

}
3
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
16 juin 2005 à 15:29
salut,

t'habites dans le morbihan ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 15:33
Si je te réponds tu me réponds?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
16 juin 2005 à 16:13
une solution qui roxe:



#define INIT(name, val) int name[] = val

#define v ,

#define e {

#define s }



int main()

{



INIT(a, e 2 v 3 v 4 v 5 v 6 s );

}
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
16 juin 2005 à 18:52
Vous allez flinguer vos sources !

Elle est vraiment utile cette macro "INIT" ?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juin 2005 à 18:57
Elle est un peu plus compliqué, j'ai mis celle la pour mettre en évidence le problème
0
Rejoignez-nous