Struct initialisieren?

OP #2258766
Lesenswert?

Hi,

Warum kann ich mit dem GCC nicht folgenden Code Compilieren?
1
struct StrukturName {
2
        double d;
3
        int i;
4
} StrukturVariable1 = { 1.1, 55}, StrukturVariable2 = { i = 1234, d = 31.22 };

Die "StrukturVariable1" alleine geht, nur bei "StrukturVariable2" gibt 
er die Fehlermeldung das er i und d nicht kennt.

Error  2  'd' undeclared here (not in a function)
Error  1  'i' undeclared here (not in a function)

Kann mir da jemand helfen?

Grüße,
Sven
#2258770
Lesenswert?

Warum sollte gcc das können? Weil es dir als naheliegend erscheint? ;-)
Konsultiere doch den C Standard dazu. Ich meine mich dunkel zu
erinnern (schon etwas länger aus dem Programmieren), dass in C99
die Initialisierungsvariante

struct X{int i; char c;} x = {.i=1, .c='A'};

möglich ist.
#2258776
Lesenswert?

Hallo Sven,

und so klappts auch mit dem Compiler:
1
#include <stdio.h>
2

3
int main (void)
4
{
5
  struct StrukturName {
6
        double d;
7
        int i;
8
  } StrukturVariable1 = {1.1, 55}, StrukturVariable2 = {31.22, 1234};
9

10
  printf("%f, %d",StrukturVariable1.d, StrukturVariable1.i);
11
  printf("%f, %d",StrukturVariable2.d, StrukturVariable2.i);
12
}

Achtung: Ich habe bei der Definition der zweiten Strukturvariable die 
beiden Parameter vertauscht, um nicht einer Integer-Variablen einen 
Fließkommawert zuzuweisen!


Gruß

Markus
OP #2259040
Lesenswert?

Hi,

@ Markus: Danke für deinen Beitrag. Mir geht es vor allem um die 
Initialisierung. Da finde ich die Variante 2 besonders bei größeren 
Konstrukten schon sehr hilfreich.

Ich habe es jetzt aber hinbekommen und überlege noch, ob ich den 
Wikipediaartikel ändenr soll. Oder ob das vom Compiler / C-Standart 
abhängt und so schon seine richtigkeit hat....

Grüße,
Sven

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren