Forum: PC-Programmierung C: Konstantes array indexweise definieren


von Walter T. (nicolas)


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
von mh (Gast)


Lesenswert?

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.

von Yalu X. (yalu) (Moderator)


Lesenswert?

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

: Bearbeitet durch Moderator
Beitrag #5923408 wurde von einem Moderator gelöscht.
von Walter T. (nicolas)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.