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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.