Ich denke, der Präprozessor behandelt Dateien nacheinander und ich kann nicht herausfinden, wie man das mit Includes macht, also denke ich, dass es unmöglich ist, aber es wäre toll, die Gedanken anderer zu hören.
Ich habe in a.cpp
:
und ich möchte es von 2.cpp
verwenden.
BEARBEITEN: Ich kann die erste Datei nicht ändern. Also für den Moment habe ich nur definiert kopiert. Aber die Frage ist noch offen.
Defines innerhalb einer Quelldatei werden von anderen Übersetzungseinheiten nicht gesehen. Implementierungsdateien werden separat kompiliert.
Sie können entweder
const int A = 1;
in einer Implementierungsdatei und deklariere es, wenn du es extern const int A;
benutzen willst. Von diesen würde ich sagen, dass die erste Option möglicherweise die schlechteste ist, die Sie verwenden können .
Wenn Sie eine Definition zwischen zwei Quelldateien freigeben möchten, verschieben Sie sie in eine Headerdatei und fügen Sie diesen Header aus beiden Quelldateien ein.
mydefines.h:
%Vor%source1.cpp:
%Vor%source2.cpp:
%Vor%Sie können das Define auch in der Compiler-Befehlszeile angeben. Dies kann jedoch für plattformübergreifenden Code (der möglicherweise andere Befehlszeilen für unterschiedliche Compiler benötigt) schwierig sein.
Wie ein Weg - mit externen const Variablen.
Zum Beispiel:
file1.h (wo Sie Definitionen verwenden werden)
%Vor%file2.h (wo Sie Definitionen definieren)
%Vor%Pro & amp; Con:
(+): Sie können einige Werte für defines
verwenden(-): ALLE Definitionen müssen definiert werden
Tags und Links c++ c-preprocessor