Tableau en #define [Résolu]

boudafc 48 Messages postés mercredi 27 avril 2005Date d'inscription 18 juillet 2008 Dernière intervention - 29 avril 2008 à 09:22 - Dernière réponse : boudafc 48 Messages postés mercredi 27 avril 2005Date d'inscription 18 juillet 2008 Dernière intervention
- 29 avril 2008 à 10:15
Bonjour,
je souhaite pouvoir définir dans un #define tout le contenu d'un tableau comme suit:
#define CHAMPS ""TOTO", "TATA", "TITI""

et dans mon code:
char tabChamps[][512] = {CHAMPS}; 

tout ceci pour que l'utilisateur n'ait qu'à modifier le define dans le *.h et pas à aller chercher une ligne dans le code pour modifier le contenu du tableau...

problème, lorsque je fais:
printf("%s\n", tabChamps[0]);
j'obtient:
"TOTO", "TATA", "TITI"
et non TOTO

quelqu'un sait pourquoi ? car normalement à la compilation tout le code est remplacé par le define...

Sinon, comment faire pour faire la même chose de manière aussi "simple" ou plutôt transparente à l'utilisation ?

merci.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 29 avril 2008 à 09:50
3
Merci
Bonjour,

Il est tout à fait normal que #define CHAMPS "TOTO", "TATA", "TITI" soit bon ! CHAMPS est défini avec le contenu exact de ce qui doit apparaître entre les accolades. Le préprocesseur se contente de faire une substitution exacte avec les #define.

Dans #define CHAMPS ""TOTO", "TATA", "TITI"", les 3 éléments sont transformés en une seule chaîne de caractères ! Il n'y a donc que tabChamps[0] qui soit initialisé. Ne pas confondre le guillemet d'encadrement de chaîne (") et le guillemet qui doit apparaître tel quel dans une chaîne (").

Jean-François

Merci cs_jfrancois 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_jfrancois
boudafc 48 Messages postés mercredi 27 avril 2005Date d'inscription 18 juillet 2008 Dernière intervention - 29 avril 2008 à 10:15
0
Merci
oui,
c'est vrai que j'avais fais l'amalgame, je pensais que mes #define devaient être systématiquement entre "" alors que non.

merci.
Commenter la réponse de boudafc
boudafc 48 Messages postés mercredi 27 avril 2005Date d'inscription 18 juillet 2008 Dernière intervention - 29 avril 2008 à 09:25
-1
Merci
Bon, malgrès les différents tests que j'avais fait avant de poster, j'ai trouvé la solution (qui me semblait pourtant peu probable...)
il faut faire:
#define CHAMPS "TOTO", "TATA", "TITI"

tout simplement. ceci pourra peut-être en aider certains un jour ou l'autre....
Commenter la réponse de boudafc

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.