Vinzenz Mai: Globale Variablen in C

Beitrag lesen

Hallo Markus

ich hätte da mal eine ganz allgemeine Frage zu globalen Variablen in C.

In C?

Oft ist es viel leichter und übersichtlicher wenn ich globale Variablen verwende, anstatt die Variablen in jeder Funktion neu zu definieren, da in meinem Fall eigentlich jede Funktion ständig den aktuellen Wert dieser Variablen kennen muss. (Kommunikation der Threads)

Warum ist das übersichtlicher? Weil Du eine Variable bei der Parametereingabe einsparst?

Erkläre mir bitte, warum Du globale Variablen für "übersichtlich" hältst. Mir geht es genau umgekehrt: globale Variablen sind unübersichtlich. Ich sehe nicht, wo sie deklariert wurde. Ich sehe nicht, wer sie zuletzt manipuliert hat. Ich wundere mich höchstens, dass der Compiler keinen Fehler ausspuckt (dafür der Linker eine Doppeldeklaration anmosert).

Irgendwie habe ich aber oft gehört, dass man globale Variablen nur dann einsetzen sollte, wenn es unbedingt nötig ist.

Selbstverständlich gilt der gesunde Grundsatz:
So viele wie nötig, so wenige wie möglich (idealerweise sind es somit 0).

Jetzt bin ich natürlich ein wenig verunsichert. Wie genau soll ich "unbedingt nötig" verstehen?

Unbedingt nötig heißt: Du kannst auf diese globale Variable auf keinen Fall verzichten. Kannst Du es, so ist diese nicht nötig und du solltest auf diese Variable verzichten.l

Spricht etwas gegen eine bessere Übersichtlichkeit, die durch den gemäßigten Einsatz von globalen Variablen gewährleistet ist? Lesbarkeit ist doch auch eine Art von Effizienz.

Ok, wenn gemäßigter Einsatz "keine globale Variable" bedeutet, dann kann ich Dir zustimmen :-) Ohne Not verzichte auf globale Variablen.

Was soll ich nun davon halten?

Warum glaubst Du auf eine bestimmte globale Variable nicht verzichten zu können? Warum muss diese Variable in allen Modulen zur Verfügung stehen. Warum muss sie überall geändert werden können. Wie überwachst Du die Manipulation des Variableninhalts? Kannst Du Namenskonflikte ausschließen?

Können Dir vielleicht modullokale Variablen weiterhelfen?

Freundliche Grüße

Vinzenz