In C würden Sie häufig / manchmal (aus Stilgründen) eine Dateibereichsvariable verwenden static
, in der Sie eine private Klassenmitgliedsvariable in C ++ verwenden würden. Wenn Sie auf Multithread-Programme skalieren, passt das einfache Hinzufügen thread_local
von C11 oder der lang unterstützten Erweiterung __thread
gut. Ich weiß, dass Sie in C genau das Gleiche tun können wie in C ++, indem Sie alles in a einfügen struct
und eine Reihe von Funktionen erstellen, die struct
als erstes Argument einen Zeiger darauf verwenden . Einige Bibliotheken tun dies ausgiebig. Aber mein persönlicher Stil ist struct
es, bei Bedarf so klein wie möglich zu halten .
Ich lese oder höre oft Leute, die argumentieren, dass 'globale' Variablen so schlecht sind. Ich folge ihren Gründen, und die meisten ihrer Argumente scheinen sich auf extern
globale Variablen in C-Begriffen zu beziehen . Was sie sagen, ist sicherlich wahr. Ich verwende manchmal 1 oder 2 extern
deklarierte Variablen im gesamten Programm, wenn dies die Dinge erheblich vereinfacht und wenn es einfach ist, sie im Auge zu behalten, aber wenn Sie weiter gehen, wird ein Programm leicht unvorhersehbar.
Was ist mit static
Variablen? Haben sie immer noch das gleiche Problem wie "echte" globale Variablen? Vielleicht muss ich diese Frage nicht einmal stellen und weitermachen, wenn ich denke, dass das, was ich tue, richtig ist, aber heute habe ich einen anderen Beitrag vom Typ "Globale Variablen sind SCHLECHT" gesehen und bin schließlich hierher gekommen und habe gedacht, dass dies vielleicht richtig ist Platz für solche Fragen. Was ist dein Gedanke?
Diese Frage ist kein Duplikat davon, da in dieser Frage nach extern
und static
nicht lokalen Variablen gefragt wird, während sich die andere Frage auf Variablen für den Dateibereich und den Blockbereich static
bezieht.