Unterschied "extern" vs. get-Funktion?

OP (Firma: keine) #599207
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?
Gast #599213
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.
Gast #599223
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
Gast #601240
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.
#602038
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
Gast #602334
... 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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.