Est-il possible d'utiliser des #define d'autres fichier cpp?
Je pense que le préprocesseur gère les fichiers un par un et je ne peux pas comprendre comment le faire avec comprend, donc je pense que c'est impossible, mais ce serait bien d'entendre d'autres pensées.
J'ai dans a.cpp
:
#define A 1
et je veux l'utiliser à partir de 2.cpp
.
EDIT:
Je ne peux pas modifier le premier fichier. Donc pour l'instant j'ai juste copié définit. Mais la question encore ouverte.
OriginalL'auteur Yola | 2013-01-11
Vous devez vous connecter pour publier un commentaire.
Définit à l'intérieur d'un fichier source ne sont pas vus par les autres unités de traduction. La mise en œuvre, les fichiers sont compilés séparément.
Vous pouvez soit
extern const int A = 1;
dans un fichier de mise en oeuvre et de le déclarer lorsque vous voulez l'utiliserextern const int A;
.De ces, je dirais la première option est peut-être le pire que vous pouvez utiliser.
Je dois prendre problème avec la couverture déclaration, y compris les #define dans un en-tête est la pire façon de le faire! Je ne veux pas être tous Daily WTF "Ah bien, si vous êtes dans un environnement embarqué avec pas de système de fichier bla bla", mais il y a certainement des situations où un #define est beaucoup mieux qu'une const int.
En termes de dépendances de fichiers et de couplage de l'option 1 et 3 semblent être l'équivalent. Suis-je manqué quelque chose?
- Je ajouter à mettre "extern" en face de la première définition pour en faire des œuvres. Voir: stackoverflow.com/questions/14894698/...
OriginalL'auteur Luchian Grigore
Si vous souhaitez partager une de définir entre les deux fichiers source, le déplacer vers un fichier d'en-tête et de l'inclure l'en-tête à partir de deux fichiers sources.
mydefines.h:
source1.cpp:
source2.cpp:
Vous pouvez aussi spécifier la définir dans la ligne de commande du compilateur. Cela peut être fastidieux à maintenir pour la croix-plate-forme de code (ce qui peut nécessiter différentes lignes de commande pour les différents compilateurs).
OriginalL'auteur simonc
Vous devez mettre votre
#define
dans un fichier d'en-tête qui est ensuite#include
d par les deux fichiers cpp.OriginalL'auteur Vicky
Comme un moyen de l'aide extern const variables.
Par exemple:
fichier1.h (où vous pourrez utiliser les définitions)
fichier2.h (où vous pourrez définir les définitions)
Pro & Con:
(+): vous pouvez utiliser certaines valeurs pour les définit
(-): TOUTES les définitions doivent être définis
OriginalL'auteur