L'ajout de citations à l'argument en C++ préprocesseur
J'aimerais passer le nom d'un fichier include comme un argument de compilateur afin que je puisse modifier un grand nombre de paramètres de configuration. Cependant, mon C++ build est par l'intermédiaire d'un makefile comme le processus qui supprime les guillemets à partir des arguments passés au compilateur et le pré-processeur. J'espérais faire quelque chose d'équivalent à
#ifndef FILE_ARG
//defaults
#else
#include "FILE_ARG"
#endif
avec ma ligne de commande, y compris -DFILE_ARG=foo.h. Bien sûr, cela ne fonctionne pas depuis le préprocesseur ne se traduit pas FILE_ARG.
J'ai essayé
#define QUOTE(x) #x
#include QUOTE(FILE_ARG)
qui ne travaillent pas pour la même raison.
Pour l'écriture de scripts raisons, je préfère le faire sur la ligne de commande plutôt que d'aller dans et modifier une ligne dans la routine appropriée. Est-il de toute façon?
Vous devez vous connecter pour publier un commentaire.
Pour ajouter des citations vous avez besoin de ce truc:
Vous pouvez faire
Sur la ligne de commande
devrait faire l'affaire.
-DFILE_ARG='"foo.h"'
avec des guillemets simples au lieu de backslashed guillemets...Vous pouvez aussi essayer de les inclure commutateur.
manuel de gcc:
Fonctionne pour moi. Peut-être que vous avez oublié de citer correctement dans votre Makefile?
EDIT:
La raison pour laquelle vous pourriez ne pas être en mesure d'obtenir en citant le travail est parce que le préprocesseur travaille dans les phases. En outre, j'ai utilisé "gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2", les résultats peuvent varier entre les compilateurs.