Forum: Compiler & IDEs static Variable inkludieren


von Nixwisser (Gast)


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?

von Patrick (Gast)


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;
1
void SetVar(int var)
2
{
3
 variable = var;
4
}

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

von Johannes M. (johnny-m)


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...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Nixwisser (Gast)


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.

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.