C++: Datei in Hauptprogramm einbinden
-
Hallo,
ich will eine Datei (welche nur Quelltext enthält) in ein Programm einbinden.
Der Übersichtlichkeit halber habe ich mal ein sehr einfachen Prog geschrieben.Hauptprogramm:
#include <cstdlib> #include <iostream> #include C:\Dev-Cpp\Test\Datei-Einbinden\datei2.cpp using namespace std; int wert1; int wert2; int main() { test(); cout << "\nHallo, eine Zahl eingeben: "; cin >> wert1; cout << "\nEingegeben: " << wert1; cin >> wert2; }
Einzubindende Datei:
#include <cstdlib> #include <iostream> using namespace std; void test() { printf ("TEST"); }
Normalerweise müsste jetzt doch wenn ich das Programm ausführe auf der ersten Zeile stehen: TEST.
Wenn ich das Prog compiliere, erscheinen folgende Fehler:
3:10 C:\Dev-Cpp\Test\Datei-Einbinden\main.cpp | #include expects "FILENAME" or <FILENAME> C:\Dev-Cpp\Test\Datei-Einbinden\main.cpp | In function `int main()': 12 C:\Dev-Cpp\Test\Datei-Einbinden\main.cpp | `test' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) C:\Dev-Cpp\Test\Datei-Einbinden\Makefile.win | [Build Error] [main.o] Error 1
Was mache ich falsch?
Wenn ich spitze Klammern um die Zeile 3. Zeile im Hauptprogramm mache (C:\Dev-Cpp\Test\Datei-Einbinden\datei2.cpp), erscheint folgendes:
7 C:\Dev-Cpp\Test\Datei-Einbinden\datei2.cpp | multiple definition of `test()'
-
-
Hallo,
Was mache ich falsch?
Einiges...
Ein Dateiname für #include steht in spitzen Klammern oder in Anführungszeichen(").
Es werden keine .cpp-Dateien #included, sondern .h-Dateien (die zusätzlich zur .cpp-Datei erstellt werden), in denen z.B. Funktionen wie hier Test deklariert werden:
datei2.h:
// enthält hier nur eine Zeile void test();
Und diese Datei wird #included. Da in datei2.h nur deklariert, aber nicht definiert (das passiert in datei2.cpp) wird, gibt es auch keine "multiple definition of `test()" in main.cpp
MfG,
Probe-Nutzer
-
Hallo,
vielen Dank für die (ausführliche) Antworten
Wo finde ich denn die .h Datei?
Im Ordner, wo ich die Datei abgespeichert habe, finde ich bloß eine .cpp und .o Datei.(btw., verwende Dev-C++ 4.9.9.2)
-
$h4rk schrieb:
Hallo,
vielen Dank für die (ausführliche) Antworten
Wo finde ich denn die .h Datei?
Im Ordner, wo ich die Datei abgespeichert habe, finde ich bloß eine .cpp und .o Datei.(btw., verwende Dev-C++ 4.9.9.2)
Die schreibst normalerweise du selber. Das ist der Header zu den Definitionen. Also die Klassendeklaration.
// bla.h (deklaration) class foo{ void init (); void exit (); ... };
//bla.cpp (implementierung) foo::init (){ } foo::exit (){ }
-
Wenn keine Header-Datei dabei ist, erstelle sie einfach schnell selber in Dev-C++.
MfG,
Probe-Nutzer
-
Perfekt Leute, vielen Dank, es funktioniert wunderbar
-
btw: ich empfehle dir außerdem noch einen aktuellen Compiler/IDE zu benutzen. Bsp: "Visual Studio C++ 2008 Express"(kostenlos) oder CodeBlocks (sogar Open Source
) denn Dev-C++ ist "mit Vorsicht" zu genießen
-
übrigens:
du scheinst ja nen ganzen ordner mit dateien zu haben, die du ab und an includieren willst...
jedes ma so was zu schreiben
#include "C:\\Dev-Cpp\\Test\\Datei-Einbinden\\datei2.cpp"
is doch echt 1. sackgang 2. ne gerad übersichtlich...wie wärs, wenn du
C:\Dev-Cpp\Test\Datei-Einbinden
als includepfad hinzufügst?dann musst du nur noch
#include "datei2.cpp" schreiben (mal abgesehen davon, dass man halt keine *.cpp`s includieren sollte...)bb ^^