Statische globale Variablen in Headerdateien?
-
Hallo liebe Community,
ich habe in der Datei test.cpp Datei statische globale Variablen initialisiert:
static int 1 = 10;
static int 2 = 20;Diese habe ich im Header (test.h) deklariert:
extern int 1;
extern int 2;Nun bekomme ich die Fehlermeldung, dass man bei einer Variable nicht mehr als eine Speicherklasse angeben darf. Also entweder static, oder extern pro Variable.
Ist meine Annahme, dass statische globale Variablen NICHT in Headerdateien geschrieben werden dann richtig? Oder wie muss man diese in solch einem Fall behandeln?Viele Grüße und danke für alle Antworten!
-
Was denkst du, was static mit deinen Variablen macht?
-
@manni66
"static" heißt ja, dass diese Variablen nur in der Datei sichtbar sind. Nur ich dachte, dass es vielleicht für die eigene Headerdatei nicht gilt, weil man ja globale Variablen immer in die Headerdatei schreiben sollte. Aber in dem Fall vielleicht nicht.
Ich bin ein Anfänger in C++ und weis ganz sicher noch nicht alles was machen machen kann und deswegen ist das gerade eine Annahme.
Also für ein kurzes Ja, oder Nein wäre ich dir sehr dankbar.Viele Grüße
-
@Coop4Free sagte in Statische globale Variablen in Headerdateien?:
Nur ich dachte, dass es vielleicht für die eigene Headerdatei nicht gilt
Es gibt keine eigene Headerdatei.
@Coop4Free sagte in Statische globale Variablen in Headerdateien?:
weil man ja globale Variablen immer in die Headerdatei schreiben sollte
Statische Variablen sind nicht global ("static" heißt ja, dass diese Variablen nur in der Datei sichtbar sind) . Das ist ja der Witz daran.
-
@manni66
Also ich gehe einfach mal davon aus, dass du mir sagen willst, dass meine Annahme richtig ist, oder?
-
@Coop4Free sagte in Statische globale Variablen in Headerdateien?:
@manni66
Also ich gehe einfach mal davon aus, dass du mir sagen willst, dass meine Annahme richtig ist, oder?
Nein. Deine Annahme ist aus den genannten Gründen falsch. Die static-Variablen sollst du natürlich trotzdem nicht in den Header schreiben.
-
@manni66
Okay danke
-
@Coop4Free In eine Headerdatei kommen nur die Informationen rein, die eine andere .cpp Datei braucht um die Funktionen aus dieser .cpp Datei zu nutzen.
Da stehen Schnittstelleninformationen drin. Mehr nicht.
Wenn dein Programm nur aus einer .cpp besteht, brauchst du keinen eigenen Header.
static
und Nutzung durch andere .cpp schließen sich irgendwie aus.
-
@Coop4Free sagte in Statische globale Variablen in Headerdateien?:
static int 1 = 10; static int 2 = 20;
Abgesehen von der Diskussion um
static
möchte ich hier auch nochmal auf die Regeln von C++ bezüglich gültiger Namen für Bezeichner hinweisen. Ich vermute aber, dass es sich nur um einen Tippfehler handelt (?).