Frage zu include
-
Normalerweise kenne ich es so, dass alle #include Befehle in die Header_Datei gehören. Bis auf eine. Die eigene wasweissich.h.
Allerdings habe ich jetzt festgestellt, dass es bei manchen #includes nicht egal ist ob sie in der cpp oder in der h Datei stehen.
Schreibe ich den #include ???.h in die Header-Datei bekomme ich eine
Fehlermeldung. Schreibe ich sie in die cpp Datei läuft alles ohne Probleme.
Kann mir jemand sagen, woran dies liegt oder welche #include Befehele in die cpp und welche in die h-Dateien müssen ??FGGF
-
The Godfather schrieb:
[...]in die Header-Datei bekomme ich eine
Fehlermeldung. [...]Dann würde ich mal eine Lösung praktizieren.
(Oder sagen was für eine Meldung kommt)Und das includes standardmässig in die .h Datei gehören ist quatsch.
Vielmehr sollte man versuchen sie möglichst in die cpp DAtei zu bekommen und nur wenn sie wirklich in der h Datei gebraucht wird dort includen.
Der Header wird von allen anderen cpp Dateien benutzt(wenn sie einen passenden include haben), das heisst sie haben wenn du alle Includes in die .h Datei schreibst jede Menge unnötigen Ballast drin.
Programm wird grösser(alles kann der auchnicht wegoptimieren), compilieren dauert länger und du hast ne Menge Variablen und Klassen in der cpp Datei verfügbar die keine Sau braucht...
-
Die Fehlermeldung die ich bekomme lautet:
[C++ Fehler] ABS1.h(52): E2303 Typname erwartet
[C++ Fehler] ABS1.h(52): E2139 In Deklaration fehlt ;Und dieser Fehler taucht auf wenn ich die #include-Anweisung einer anderen Header-Datei in die Header Datei schreibe. Schreibe ich die #include-Anweisung in die cpp Datei läuft es.
Wenn ich dich richtig verstanden habe gehören alle #includes die nur von der einen Unit benötigt werden in die cpp Datei. Dies würde bedeuten, dass es am besten wäre so wenig wie möglich in die Header-Datei zu schreiben. Dann ist es einfacher möglich bestimmte Units zu kopieren und in anderen Programmen zu implementieren.Somit wäre dann jede Unit unabhängiger von den anderen.
Allerdings fällt mir jetzt kein Beispiel ein für ein sinnvolles #include in der Header-Datei.Gruß
FGGF
-
Ich vermute das ABS1.h irgendeine andere .h Datei braucht weil in dieser eine Klasse oder Struktur definiert ist die in ABS1 verwendet wird.
setzt das #include "ABS1.h" mal in der cpp Datei ganz nach oben(vor allen anderen includes) und schau obs dann geht.Ansonsten hast du das mit den includes jetzt richtig verstanden denkich.
Ein Beispiel für ein include in der .h Datei wäre beispielsweise#ifndef __A_H_FILE__ #define __A_H_FILE__ #include <string> void mache_irgendwas(std::string ein_string); #endif
würde die Funktion mache_irgendwas hingegen nur intern mit strings arbeiten und einen char* übergeben bekommen würde ich das include lieber in die cpp Datei schreiben.