Bonjour,
mon problème est simple, mais pas très facile à expliquer :
Je voudrais obtenir l'équivalant de
#define NAME "toto"
à partir de la ligne de commande du compilateur/preprocesseur.
Ce que j'avais avant dans foo.c :
#define NAME "toto"
et plus loin :
const char * name = NAME ;
et ça marche impec !
J'ai bien name qui contient "toto".
Ce que je voudrais maintenant, c'est que la chaîne "toto" vienne de ma ligne de commande.
Donc, naïvement, j'ai foo.c qui contient :
const char * name = NAME ;
et sur ma ligne de commande :
gcc foo.c -DNAME="toto"
(j'utilise gcc juste pour cet exemple)
Le problème c'est que les guillemets sautent au passage :
Un fois préprocessé (option -E), mon code contient :
const char * name = toto ;
et bien sûr, ça ne compile pas car toto est un symbole inconnu.
En fait, c'est exactement comme si ma ligne de commande était :
gcc foo.c -DNAME=toto
(sans les guillemets)
J'ai bien essayé de faire joujou avec les opérateurs # et ## mais rien ne marche !
je pensais m'y connaître en preprocess mais là, je suis comme un bleu...
Si quelqu'un a une idée, je suis preneur !
Merci d'avance.
Partager