Headerstrukturierung
-
Ok machen wir es noch einfacher:
Es gibt eine globale Variable die in den headerdateien genutzt wird und dort nicht erkannt wird, obwohl ich sie vorher deklariere:
bool global;
#include "bla.h" // global unbekannt
-
Ok ich habe ein wenig rumgespielt und die globale variable einfach noch mal in den einzelnen headerfiles als extern deklariert. Allerdings habe ich dazu eine Frage:
bewirkt das extern das die globale variable erkannt und verwendet wird? Sprich die extern variable ist gar keine eigene variable mit der weiter gearbeitet wird?
-
Eine extern-Deklaration ist nur ein Verweis auf eine irgendwo anders existierende Variable, der spätestens vom Linker aufgelöst wird. Also ja.
-
Und bist du noch so nett und erklärst mir wie ich die namespaces in den .h vermeide? die __ und _ wurden schon entfernt
-
du sollst die namespaces nur nicht global öffnen (also kein using nehmen)
-
Hm du meinst nur "namespace std;"? das mag der compiler nicht "Syntaxfehler : ';'" ?
-
Nein einfach immer brav "std::", bzw. privat in einem Scope und nicht im globalen Scope "using namespace std;" schreiben.
MfG SideWinder
-
Ok erledigt aber ich will ehrlich sein, was ist so schlecht daran einfach die namensräume zu öffnen? Wäre nett wenn ihr mir das erklärt ich weiß es nicht und würde es gerne wissen
-
Printkey schrieb:
Ok erledigt aber ich will ehrlich sein, was ist so schlecht daran einfach die namensräume zu öffnen? Wäre nett wenn ihr mir das erklärt ich weiß es nicht und würde es gerne wissen
Garnix.
Aber wenn du das in einer Header Datei machst, dann ist der Namensraum auch in allen Dateien offen, die diese Header #includen.Das kann natürlich zu komischen Fehlern führen - weil du damit ja das ganze Namespace-Konzept aushebelst.
Lokal ist das ja OK - weil du genau weisst, welche Funktionen etc. du deklariert hast - aber das kannst du ja für fremden Code nicht wissen.
-
ahh ok vielen dank