www.mikrocontroller.net

Forum: Compiler & IDEs static Variable inkludieren


Autor: Nixwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

eine static Variable außerhalb einer Funktion ist ja nur in diesem 
Codefile sichtbar. Was passiert, wenn das Codefile in ein anderes 
Codefile inkludiert? Kann ich dann aus beiden Files auf die Variable 
zugreifen?

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss es auch nicht sicher, aber ich glaube nicht. Aber Du kannst 
doch eine Funktion schreiben:

In der Funktion, in der die variable drin ist:

static int variable;
void SetVar(int var)
{
 variable = var;
}

Und dann in der aufrufenden Funktion:
SetVar(Wert);

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Codefiles" werden überhaupt nicht includiert. Wenn Du es dennoch tust, 
dann wird der Inhalt des includierten "Codefile" 1:1 in den anderen Code 
eingefügt und somit zum Bestandteil des betreffenden "Codefiles", 
wodurch selbstverständlich auch alle Variablendefinitionen eingefügt 
werden...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nixwisser wrote:

> eine static Variable außerhalb einer Funktion ist ja nur in diesem
> Codefile sichtbar.

Sie ist innerhalb einer `translation unit' gültig.  Das ist genau
der Unterschied dabei: eine translation unit umfasst die initiale
Quelldatei und alle von ihr mittels #include reingezogenen Dateien.

Autor: Nixwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@all

Alles klar, danke.

@Johannes

In diesem Fall (Testrahmen) muss das sein, da auch die modulinternen 
Funktionen des inkludierten Files durch den Test aufgerufen werden 
sollen, die aber nicht im Header-File aufgeführt sind, da sie für das 
System nicht sichtbar sein sollen.

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.