Was bedeutet ein Punkt vor dem Variablennamen in struct?

Lesezeit: 1 Minute

Benutzeravatar von c0de
c0de

Als ich mir die Linux-Kernel-Quelle ansah, fand ich Folgendes:

static struct tty_operations serial_ops = {
  .open = tiny_open,
  .close = tiny_close,
  .write = tiny_write,
  .write_room = tiny_write_room,
  .set_termios = tiny_set_termios,
};

Ich habe noch nie eine solche Notation in C gesehen. Warum steht vor dem Variablennamen ein Punkt?

  • Dies dient für Initialisierung von Struct-Mitgliedern (sie sind keine Variablen) im “neuen” C99-Stil (einige Compiler haben möglicherweise das gleiche Format verwendet, sogar bevor C99 herausgegeben wurde).

    – pmg

    20. September 2011 um 15:45 Uhr


Benutzeravatar von Reed Copsey
Reed Copsey

Das ist ein Ausgewiesener Initialisierer, die für C99 hinzugefügte Syntax. Relevanter Auszug:

Geben Sie in einem Strukturinitialisierer den Namen eines zu initialisierenden Felds mit ‘.fieldname =’ vor dem Elementwert an. Zum Beispiel bei folgender Struktur:

struct point { int x, y; }; 

folgende Initialisierung

struct point p = { .y = yvalue, .x = xvalue }; 

ist äquivalent zu

struct point p = { xvalue, yvalue };

Benutzeravatar von sidyll
sidyll

Es wird manchmal als “designierte Initialisierung” bezeichnet. Dies ist eine C99-Ergänzung, obwohl es für eine Weile eine GNU-Erweiterung war.

In der Liste, jeder . benennt ein Mitglied der zu initialisierenden Struktur, den sogenannten Designator.

1415130cookie-checkWas bedeutet ein Punkt vor dem Variablennamen in struct?

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

Privacy policy