Forum: Compiler & IDEs Unterschied "extern" vs. get-Funktion?


von Daniel H. (Firma: keine) (commander)


Lesenswert?

Hallo,

ich bin grad ein wenig am grübeln.

Und zwar ist es ja so, dass wenn ich in einer c-Datei eine Variable 
deklariere, und diese in einer anderen c-Datei (die zum gleichen 
Programm gehört) verarbeiten möchte, ich entweder eine Funktion in die 
erste Datei packen kann, die mir den Wert zurückgibt, oder aber in einer 
dazu gehörigen Header-Datei die gleiche Variable nochmal als "extern" 
deklariere.

Wo ist denn da nun der große Unterschied, bzw. was hat welchen Vor- und 
Nachteil?

von Ulrich (Gast)


Lesenswert?

Mit funktion hat es den Vorteil das es "getrennter" ist. Und mit dem 
extern ist es platzsparender.

Ich und vieele andere machen es einfach mit extern. Also "globale" 
Variable.

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Also gibt es keinen echten Vor- oder Nachteil in dem Sinne, sondern es 
hängt vom Programmierer, seinen Vorlieben und der Anwendung ab?

von Ulrich (Gast)


Lesenswert?

kommt immer drauf an... aber defaultmässig würde ich extern nehmen und 
mir den Platz für die Funktion sparen. Hab ich auch noch fast nie anders 
gesehen

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Ok, vielen dank :)

von yalu (Gast)


Lesenswert?

Falls es noch von Interesse ist:

Eine get-Funktion kann dann Sinn haben, wenn man eine Variable für
andere Module read-only machen möchte. Dazu schützt man die Variable
mit static vor direktem Zugriff und stellt eine get-Funktion für den
Lesezugriff bereit.

von Gast (Gast)


Lesenswert?

cool - das ist mal wieder ein super Hinweis, für den ich hier fast jeden 
Tag mal rein schaue :-)

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

oder aber wenn die interne Darstellung einer Variablen eine andere ist 
als die externe. Die Set und Get Funktionen erledigen dann die 
Umrechnung.

Matthias

von Εrnst B. (ernst)


Lesenswert?

Wenn die Variable beim Auslesen mit locks (bzw cli/sei) geschützt werden 
sollte, hat die get-Methode auch den Vorteil dass man das nicht 
vergessen kann.

Bei ner extern-Variable vergisst man das spätestens beim nächsten 
Projekt, wo man das Modul wiederverwenden will... und hat dann nen 
schönen nicht reproduzierbar auftretenden Bug

/Ernst

von Werner B. (Gast)


Lesenswert?

... und mit get() kann man den Zugriff auf die Variable später auch 
"ganz einfach" auf Netzwerkfähigkeit trimmen. Die get() Funktion greift 
nicht mehr auf auf eine lokale, statische Variable zu, sondert fordert 
den Wert von einem remote Rechner an.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.