Ist es legal, ein “statisches” Mitglied in einer C-Struktur zu haben?
Zum Beispiel
struct my_struct {
int x;
static int y;
};
Wenn es tatsächlich legal ist, was sind dann die Auswirkungen der Verwendung des Schlüsselworts “statisch”?
Mnr
Ist es legal, ein “statisches” Mitglied in einer C-Struktur zu haben?
Zum Beispiel
struct my_struct {
int x;
static int y;
};
Wenn es tatsächlich legal ist, was sind dann die Auswirkungen der Verwendung des Schlüsselworts “statisch”?
Nein, das würde in C keinen Sinn machen. In C++ ist es aber gültig.
Nein, nicht drin C
(Sie können ein statisches Mitglied in a haben C++
Struktur.)
Schnukus
Sie werden wahrscheinlich durch die Tatsache verwirrt, dass Static nicht für die gleichen Zwecke verwendet wird wie in Sprachen wie Java oder C# (oder C++ für diese Angelegenheit). Dieser Beitrag erklärt die Verwendung von static durch C gründlich:
Was bedeutet „statisch“?
Es scheint, als würden Sie nach der Intuition hinter einem statischen Mitglied fragen. Ein statisches Mitglied bedeutet „eins pro Typ“ statt „eins pro Instanz“. In Ihrem Fall, falls ja
struct my_struct a, b;
dann a
und b
würde jeder sein eigenes haben x
würde aber eine gemeinsame teilen y
. Dies gilt auch für statische Elementfunktionen.
Aber wie gesagt, das gilt nicht für C, wohl aber für C++ und Java.
Compiler-Fehler beim Kompilieren; Denn immer wenn der Compiler auf das statische Schlüsselwort stößt, wird erwartet, dass er Code zum Initialisieren (Null oder explizit angegebener Wert) der statischen Variablen im Datensegment oder BSS-Segment generiert. In unserem Szenario wird für eine Strukturdeklaration kein Speicher zugewiesen, sodass der Compiler einen Fehler auslöst.
Sie können die nicht verwenden static
Spezifizierer in a structure
…
structure
Variablen können nicht innerhalb von a initialisiert werden structure
und static
Bezeichner initialisiert die Variable auf 0..
Dieses Verhalten ist in C nicht erlaubt.