PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Modul-Globale Variablen in C



f0rtex
30-12-2003, 19:25
Hallo Leute

Folgende zwei Code-Fragmente seien gegeben: (ne das wird keine Aufgabe ;-) )



/*module1.c*/

int a;

void foo();
void bar();




/* modul1v2.c */

static int a;

void foo();
void bar();


Sehe ich das richtig, dass der einzige unterschied der beiden Module derjenige ist, dass die Variable a mal im Code-Segment und mal im Daten-Segment abgelegt wird?
p.s.: falls es nicht klar sein sollte
Die Variable a ist doch in beine Fällen Modul-Global sichtbar?

MfG
f0rtex

wraith
30-12-2003, 19:29
Der Unterschied ist,daß int a im ganzen Programm zugreifbar ist,also das was man allg. als globale Variable bezeichnet.
Während static int a nur in der Übersetzungseinheit modul1v2.c zugreifbar ist.

Wo die Variable letztendlich abgelegt ist,ist nicht näher spezifiziert.

f0rtex
30-12-2003, 19:32
Verstehe ich das richtig, dass wenn nichts steht, extern als defautl angenommen wird? (d.h. Programm-Global sichtbar)

wraith
30-12-2003, 19:39
Original geschrieben von f0rtex
Verstehe ich das richtig, dass wenn nichts steht, extern als defautl angenommen wird? (d.h. Programm-Global sichtbar)
Ja,leider,war eine dumme Entscheidung der C Entwickler (irgendwo stand das auch mal).

Besser wäre es pre default die eingeschränkteste Sichtbarkeit zu vergeben.

f0rtex
30-12-2003, 19:42
Original geschrieben von wraith
Besser wäre es pre default die eingeschränkteste Sichtbarkeit zu vergeben.
full ACK :-)
Aber wenn mans weiss, kann man damit leben ;-)

Auf jeden Fall danke für die rasche Antwort.

Greets
f0rtex