Hilfe Noob-Frage
-
Hallo Leute,
Ich bin vor kurzem von Visual Basic auf C++ umgestiegen, doch ich
habe ein Problem, wie man Include-Files richtig nutzt bzw. einbindetIch benutze im Moment die Visual C++ 2005 Express Edition.
Soviel ich mitgekriegt habe macht man eine grundsätzliche Unterscheidung
zwischen 2 Typen von Include-Files:1. Header Files .h Endung (nur für Prototypen )
2. c oder cpp Files für FunktionenWenn man eine solche Datei einbinden will muss man das über den Befehl
#include "Dateiname.cpp/h" tun wenn es sich um eine eigenen File handelt.Ich hab es auch schon erfolgrich geschafft eigene Source-Files mit Funktionen einzubinden und aufzurufen aber trotzdem habe ich ein Problem wie ich mit Funktionen in eingebundenen Source-Files auf globale Variablen oder Funktionen der Main-File zugreifen kann.
Ich erläuter das mal an nem Beispiel:
Main-Files
#include <cstdlib> #include <iostream> #include "Datei.cpp" #include "Datei.h" using namespace std; int Test //meine globale Variabel void Test(void); int main(int argc, char *argv[]) { system("PAUSE"); return EXIT_SUCCESS; } void Test(void) { printf("Langeweile"); }
Datei.cpp
void KlapptNicht(void) { Test = Test * 3; Test(); }
Datei.h
void KlapptNicht(void);
wenn ich versuche dieses Projekt zu compielern bekomme ich immer die Fehlermeldung "undeclared identifier" oder ähnliches.
Wäre schön wenn mir jemand helfen könnte, weil ich trotz stundenlangem googeln nicht die Lösung meines Problems gefunden habe.
-
.cpp files includiert man nicht.
du hast unterschiedliche übersetzungseinheiten:
einmal die implemtierungscpp, in der der header includiert wird, damit der/die datentyp/en bekannt sind (bzw. bei dir die funktkionsdeklaration und sonstiges...), und einmal eine optionale main.cpp, in der ebenso nur der header includiert wird.den rest übernimmt der linker.
so long
-
na was heißt denn unddeclared identifyer? Vermutlich doch nicht deklarierter Bezeichner. Ein Bezeichener ist hier jetzt einfach eine Variable. Ich galub aber nicht dass das der einzigste Fehler ist. Es fehlt ein ; nach int Test so ist die Zeile ja nicht abgeschlossen. Auch wenn es mit ner globalen Variablen gehen sollte, solltest du dennoch vermeiden globale Variablen zu verwenden. Wenn du die Variable auch in anderen Klassen verwenden willst, dann mach das über membervariablen mit set und get Funktionen.
-
Ein paar Worte in einem guten Buch oder im Internet über die Grundlagen von C/C++ nachlesen würde Dir schon helfen, sonst müssen die Erklärungen hier wirklich lang werden.
Aber in Ergänzung zum schon geschriebenen. Im allgemeinen trennt deine IDE die einzelnen C/CPPs in Module und übersetzt diese einzelnen. Wenn Du also deine Variable "test" in deinem "main.cpp" bekannt machst, ist diese noch lange nicht in deiner "Datei.cpp" bekannt. Solche Art von globalen Variablen solltest du in einer Header-Datei definieren, welche von C/CPP Progs. eingebunden wird.Naja aber besser wäre eine Funktion mit Übergabewert und Rückgabe. Das ist der sichere Weg.
Im Übrigen sollte das selbst im VB ähnlich sein.