Brauche hilfe wegen headerdateien
-
Hi zusammen,
Ich habe irgendwie nen komisches Problem.nachdem ich mein quelltext auf mehreren Dateien verschoben habe läuft mein Programm nichtmehr. und ich habe kein plan warum.Denke ich mach dan Fehler mit dem #include aber mir kommts so vor das er meine Struktur nicht findet. Würde mich sehr freuen wenn jamend maln Auge drüber wirft.Vlg
Strige
Also meine ubung.cpp:#include "stdafx.h" using namespace System; ref struct Zahlen { Int32 zahl; Zahlen ^next; }; int main(array<System::String ^> ^args) { Zahlen ^anfang = gcnew Zahlen; anfang->zahl = -1; Int32 zahl; do { Console::WriteLine("Bitte Zahl eingeben:"); zahl = Convert::ToInt32(Console::ReadLine()); eingabe(zahl, anfang); }while(zahl != 9); Console::WriteLine(); ausgabe(anfang); return 0; }
Dann einaus.h:
using namespace System; void eingabe(Int32, Zahlen ^); void ausgabe(Zahlen ^);
und einaus.cpp:
#include "stdafx.h" using namespace System; void ausgabe(Zahlen ^anfang) { ... } void eingabe(Int32 data, Zahlen ^anfang) { ... }
und die stdafx:
#pragma once #include "einaus.h" // TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
Und zuguterletzt die Compilerfehler:
1>------ Erstellen gestartet: Projekt: cpbuebung, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>stdafx.cpp 1>c:\users\strige\cpp\cpbuebung\cpbuebung\einaus.h(5) : error C2061: Syntaxfehler: Bezeichner 'Zahlen' 1>c:\users\strige\cpp\cpbuebung\cpbuebung\einaus.h(6) : error C2065: 'Zahlen': nichtdeklarierter Bezeichner 1>c:\users\strige\cpp\cpbuebung\cpbuebung\einaus.h(6) : error C2059: Syntaxfehler: ')' 1>Das Buildprotokoll wurde unter "file://c:\Users\strige\cpp\cpbuebung\cpbuebung\Debug\BuildLog.htm" gespeichert. 1>cpbuebung - 3 Fehler, 0 Warnung(en)
-
Dein struct soll in einaus.cpp verwendet werden, da ist es aber nicht bekannt. Pack es in einen Header, der von beiden cpp-Dateien inkludiert wird. Jeden Header solltest du übrigens mit include guards oder einem "#pragma once" am Anfang der Datei vor doppeltem Einbinden schützen.
-
Danke dir erstmal für deine Antwort.
Leider funktioniert das nicht habe etliche Variationen ausprobiert.Ich bekomme halt dann andere Fehlermeldungen die ich im moment nich auflisten kann, da ich nicht an meinem Pc bin.
laut deiner Antwort müsste das ja automatisch in einaus.cpp includiert sein, da ich den versuch gemacht habe und meine struktur in zahlen.h abgespeichert habe und diese zahlen.h habe ich erst in stdafx.h includet und als das nicht funktioniert hat auch in einaus.cpp. habe sogar schon versucht jedes include in jeder Datei.
Zu deinem Hinweis mit "pragma once" etc. sollte ich die bei jedem #include mit reinschreiben oder reicht es wenn es in stdafx mit drin steht?
Werde später nochmal bissle testen und dann nochmal die Fehlermeldungen posten.
Danke erstmal
vlg
-
ubung.cpp
// Uebung.cpp: Hauptprojektdatei. #pragma once #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Zahlen ^anfang = gcnew Zahlen; anfang->zahl = -1; Int32 zahl; do { Console::WriteLine("Bitte Zahl eingeben:"); zahl = Convert::ToInt32(Console::ReadLine()); eingabe(zahl, anfang); }while(zahl != 9); Console::WriteLine(); ausgabe(anfang); return 0; }
stdafx.h
// stdafx.h : Includedatei für Standardsystem-Includedateien // oder häufig verwendete projektspezifische Includedateien, // die nur in unregelmäßigen Abständen geändert werden. // #pragma once #include "einaus.h" // TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
einaus.h
#pragma once #include "stdafx.h" using namespace System; ref struct Zahlen { Int32 zahl; Zahlen ^next; }; void eingabe(Int32, Zahlen ^); void ausgabe(Zahlen ^);
einaus.cpp
#pragma once #include "stdafx.h" using namespace System; void ausgabe(Zahlen ^anfang) { //... } void eingabe(Int32 data, Zahlen ^anfang) { //... }
-
Danke euch für die Antwort jetzt hats geklappt
*freu*
habs 1:1 von Doug_HH übernommen.
vlg