Forum: Compiler & IDEs arv-gcc: Problem mit struct


von Jürgen M. (jmayer) Benutzerseite


Lesenswert?

hallo,

bei diesem Code:

struct datenfeld { char feldname[16];
                   unsigned int zahl;
            };

struct datenfeld zeile[] = {   "abc", 123,
        "def", 456,
                         };

erhalte ich beim Compilieren mit dem avr-ggc folgende Warnungen:

../spielwiese.c:5: warning: missing braces around initializer
../spielwiese.c:5: warning: (near initialization for `zeile[0]')


irgendwie hänge ich jetzt in der Luft :-(

hat mir da jemand einen Tipp?

Jürgen

von Karl H. (kbuchegg)


Lesenswert?

Der Compiler sagts doch: missing braces

struct datenfeld zeile[] = { { "abc", 123 },
                             { "def", 456 },
                           };


Du musst ihm jede Initialisierung einer kompletten Struktur
in { } einschliessen.

von Jürgen M. (jmayer) Benutzerseite


Lesenswert?

hallo,

danke für den Tipp. Ist schon interessant wie verschiedene Compiler da 
mit solchen Feinheiten umgehen ;-)

Jürgen

von _daniel_ (Gast)


Lesenswert?

struct datenfeld zeile[] = { 0 = { .feldname = "abc", .zahl = 123 },
                             1 = { .feldname = "def", .zahl = 456 },
                           };

wenn es nicht durch C++ compiler durch soll

von Karl H. (kbuchegg)


Lesenswert?

> Ist schon interessant wie verschiedene Compiler da
> mit solchen Feinheiten umgehen ;-)

Das hat weniger mit dem COmpiler zu tun. So ist es in den
C Sprachregeln definiert.

von Marko B. (Gast)


Lesenswert?

So gehts auch:
1
struct datenfeld zeile[] = {
2
    [0].feldname = "abc",
3
    [0].zahl = 123,
4
    [1].feldname = "def",
5
    [1].zahl = 456
6
}

Finde ich persönlich übersichtlicher.

von Marko B. (Gast)


Lesenswert?

Ups, semikolon vergessen ;)

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.