Globale Variablen verpöhnt!
-
Hallo!
Kann mir einer sagen, warum globale Variablen verpöhnt sind?
Überall steht doch, mal sollte sie vermeiden. Aber warum?
Nur weil sie von allen manipuliert werden kann und das etwas unübersichtlich sein kann?
Oder gibt da es noch andere Gründe wie Performance oder andere Speicherverwaltung!?THX
B.K.
-
Die Unübersichtlichkeit und damit verbundene Erschwerung den Programmablauf nachzuvollziehen, ist doch Grund genug.
AFAIK kommt noch hinzu, dass die Reinfolge der Initialisierung unbestimmt ist, was spätestens bei Objekten in C++ Probleme machen kann.
-
Ja, schon klar.
Aber wenn ich in einer Quelldatei 10 Funktionen habe und 7 davon greifen auf dieselbe Variable zu, dann wäre eine globale Variable doch sinnvoll oder?
(nur als Beispiel!)Ok, dass mit den Initialisierungen wusste ich nicht.
Danke schön.
-
nein, du solltest Seiteneffekte vermeiden, spätestens wenn du Threads benutzt, wirst du damit ordentlich Probleme bekommen.
-
Original erstellt von cbk18:
**Aber wenn ich in einer Quelldatei 10 Funktionen habe und 7 davon greifen auf dieselbe Variable zu, dann wäre eine globale Variable doch sinnvoll oder?
(nur als Beispiel!)
**Aber du könntest die Variable zB. nur innerhalb der einen Datei "global" machen. Womit sie nicht mehr wirklich global ist. Unter global verstehe ich, Im-ganzen-Programm-global.
Ok, dass mit den Initialisierungen wusste ich nicht.
Spielt in C eigentlich auch keine Rolle. Jedenfalls fällt mir jetzt nichts ein.
-
wenn ich z.B. eine variable "debug" habe (kann 0=normaler ablauf oder 1=zusätzliche informationen) habe, kann die doch global sein?
oder soll ich für jede funktion einen zusätzlichen parameter setzen?
-
wenn ich z.B. eine variable "debug" habe (kann 0=normaler ablauf oder 1=zusätzliche informationen) habe, kann die doch global sein?
oder soll ich für jede funktion einen zusätzlichen parameter setzen?Modulglobale Variablen sind kein Beinbruch, in einem DEBUG-Fall würde ich aber auf Präprozessoranweisungen zurückgreifen, oder "debug" zumindest const machen...