C: Konstantes array indexweise definieren

OP #5923381
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.
Gast #5923395
Das sagt der gcc, wenn man nen Standard vorgibt und Warnungen 
einschaltet:
1
warning: obsolete use of designated initializer without '=' [-Wpedantic]
2
   13 |     [e_eins]{ 1 },
3
      |             ^
4

5
warning: braces around scalar initializer
6
   13 |     [e_eins]{ 1 },
Vllt. hilft dir das beim suchen.
Moderator #5923400
Das Stichwort "designated initializer" nannte mh bereits. Die richtige
Syntax sieht so aus:

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

Im ISO-Standard (C11 und C18):

6.7.9 Initialization
Beitrag #5923408 wurde von einem Moderator gelöscht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.