Kann #define aus einer anderen cpp-Datei verwendet werden?

7

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 :

%Vor%

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.

    
Yola 11.01.2013, 10:16
quelle

4 Antworten

16

Defines innerhalb einer Quelldatei werden von anderen Übersetzungseinheiten nicht gesehen. Implementierungsdateien werden separat kompiliert.

Sie können entweder

  • setze sie in eine Kopfzeile und schließe sie ein
  • verwende die Optionen deines Compilers
  • Mach es in vernünftiger Weise - 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 .

    
Luchian Grigore 11.01.2013, 10:20
quelle
7

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.

    
simonc 11.01.2013 10:18
quelle
4

Sie müssten Ihre #define in eine Header-Datei schreiben, die dann #include d von beiden cpp-Dateien ist.

    
Vicky 11.01.2013 10:18
quelle
-1

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

    
user3570562 24.04.2014 20:22
quelle

Tags und Links