globale var. in header-file
-
Übersetzungseinheit
-
Also genau die Dateien, die der Compiler kompiliert (.cpp, .cc, .c, etc.pp).
-
na, dann werd ich dass ma so ausprobieren...
-
Nur um ganz sicher zu gehen:
// foo.hpp #ifndef FOO_HPP #define FOO_HPP extern int bar; #endif
// foo.cpp #include "foo.hpp" int bar;
-
aso, ich habs ausprobiert...
wenn ich in EINE üe nochmal "int nExtern" reinschreibe, funktionierts.
wenn ich aber in mehrere ües "int nExtern reinschreibe, dann gibts wieder einen
linker-error.aso is das so ok, in EINE üe, ine EINE h-file, und nicht mehr???
-
Den Teil ohne extern EXAKT einmal. Der Teil mit extern beliebig oft.
-
gut.
aso den teil mit extern in jede .cpp,
und ohne extern in eine .h???
-
umgekehrt ...
-
hört sich n bissn komisch an, abba ok, wenns funzet...
thx für eure mühe.
-
Mensch das ist doch nicht so schwer Variabeln dürfen nur einmal definiert werden. Wo du das machst ist scheiß egal (außer du pakst es in eine Headerdatei die mehrfach includiert wird -> mehrfach definition) Mit dem Stiwort extern machst du dem Kompiler klar das es irgendwo anders eine Variabel so und so gibt (deklaration) . Wo du sie dann letzendlich definierst ist egal, hauptsache du machst es irgendwo, denn jede Variabel muss auch definiert werden, es reicht nicht sie nur zu deklarieren.
-
OK, da muss ich mein Beispiel wohl noch was ausdehnen:
// foo.hpp #ifndef FOO_HPP #define FOO_HPP extern int bar; #endif
// foo.cpp #include "foo.hpp" int bar;
// blablabla.cpp #include "foo.hpp" void cooleFunktion () { bar = 42; // kann bar verwenden }
// main.cpp #include "foo.hpp" int main () { bar = 7; // kann bar auch verwenden }
Jede Datei, die den Header inkludiert (und somit die extern-Anweisung) kann auf 'bar' zugreifen, das in genau einer ÜE definiert wurde!