Verwendung von „static“ innerhalb einer Struktur in C

Lesezeit: 1 Minute

Benutzer-Avatar
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.)

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

1270330cookie-checkVerwendung von „static“ innerhalb einer Struktur in C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy