mikrocontroller.net

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


Autor: Daniel H. (Firma: keine) (commander)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel H. (Firma: keine) (commander)
Datum:

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

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel H. (Firma: keine) (commander)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, vielen dank :)

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.