mikrocontroller.net

Forum: PC-Programmierung C: Konstantes array indexweise definieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Walter T. (nicolas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

ich habe ein konstantes Array, das ich indexweise beschreiben will:
enum zahlen_e
{
    e_eins,
    e_zwei,
    e_drei,
};


const int lookuptable[] =
{
    [e_eins]{ 1 },
    [e_zwei]{ 2 },
    [e_drei]{ 3 },
};

Es geht. Ich habe es durch ausprobieren herausgefunden, weil bei structs 
benannte Fehler ja ähnlich gehen. Wie heißt dieses Konstrukt? Ich suche 
einen Suchbegreiff, um im Standard/in den GNU-Erweiterungen Näheres 
anzugucken.

: Verschoben durch Moderator
Autor: mh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sagt der gcc, wenn man nen Standard vorgibt und Warnungen 
einschaltet:
warning: obsolete use of designated initializer without '=' [-Wpedantic]
   13 |     [e_eins]{ 1 },
      |             ^

warning: braces around scalar initializer
   13 |     [e_eins]{ 1 },
Vllt. hilft dir das beim suchen.

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Stichwort "designated initializer" nannte mh bereits. Die richtige
Syntax sieht so aus:

const int lookuptable[] =
{
    [e_eins] = 1,
    [e_zwei] = 2,
    [e_drei] = 3,
};

Im ISO-Standard (C11 und C18):

6.7.9 Initialization

: Bearbeitet durch Moderator
Beitrag #5923408 wurde vom Autor gelöscht.
Autor: Walter T. (nicolas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mh schrieb:
> warning: obsolete use of designated initializer without '=' [-Wpedantic]

Okay, diese Warnung gibt mein nicht mehr ganz taufrischer GCC nicht, 
trotz Wpedantic.

mh schrieb:
> designated initializer

Danke für das Stichwort!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.