statische Struktur vs. nicht statischer
-
static struct my_struct1 { int number; }; struct my_struct2 { int number; };
Wenn ich das so deklariere, ist dann my_struct1 nur innerhalb der Datei gültig, oder was ist der Unterschied?
Danke schonmal.
-
Hmm, diese Schreibweise sagt mir nichts.
Ich kenne es so:struct my_struct { int number; }; stuct my_struct ms1; //globale Struktur für das gesammte Programm static stuct my_struct ms2; //globale Struktur nur für diese Quelltextdatei void foo(){ stuct my_struct ms3; //temporäre Struktur die nur in foo lebt und nach beenden von foo weg ist static stuct my_struct ms4; //Struktur die nur in foo lebt, aber bei einem zweiten Aufruf von foo immernoch da ist }
Gleiches gilt für Funktionen und sonstige Variablen.
Edit: Der Kommentar für ms4 ist halb gelogen. So wie es da steht war es einmal gedacht. Man kann aber auch ms4 zum Beispiel als Rückgabewert zurückgeben und dann außerhalb von foo benutzen.
-
Wenn ich das so deklariere, ist dann my_struct1 nur innerhalb der Datei gültig, oder was ist der Unterschied?
Kein Unterschied. Die Strukturdeklarationen sind sowieso immer nur in einer Übersetzungseinheit sichtbar. Doch es wird zu einem Unterschied, wenn du auch noch Variablen anlegst, wie schon nwp2 angemerkt hat, man kann es aber auch so schreiben:
static struct my_struct1 { int number; } variable1; struct my_struct2 { int number; } variable2; // dann ist variable1 nur in dieser Ü-Einheit sichtbar, // aber variable2 auch in anderen