Forum: Mikrocontroller und Digitale Elektronik Energia MSP430 Zweidimensionale Array`s?


von Markus G. (hulk85)


Lesenswert?

Hi Leute,
ich versuche gerade ein zweidimensionales array in dem Energia für einen 
MSP430G2553 zu erstellen. Aber Energia zickt rum..
"..._4.cpp:13:42: error: too many initializers for 'int [8][10]'"

Kann es sein das Enegia zweidimensionale array`s nicht unterstützt?

von Karl H. (kbuchegg)


Lesenswert?

Markus G. schrieb:
> Hi Leute,
> ich versuche gerade ein zweidimensionales array in dem Energia für einen
> MSP430G2553 zu erstellen. Aber Energia zickt rum..
> "..._4.cpp:13:42: error: too many initializers for 'int [8][10]'"
>
> Kann es sein das Enegia zweidimensionale array`s nicht unterstützt?

Kann ich mir nicht vorstellen. Mehrdimensionale Arrays sind für einen C 
Compiler eine leichte Übung. Zumal es sie eigentlich gar nicht gibt und 
nur durch syntaktischen Zucker im Arrayhandling abgearbeitet werden.

Vielleicht hast du dich auch einfach nur verzählt oder die Syntax zur 
Initialisierung nicht eingehalten?

von Karl H. (kbuchegg)


Lesenswert?

Karl H. schrieb:

> ... für einen C Compiler .....

Muss mich korrigieren
1
..._4.cpp: ...

für einen C++ Compiler. Was deine These von einem Problem mit dem 
Compiler noch unwahrscheinlicher macht.

: Bearbeitet durch User
von Markus G. (hulk85)


Lesenswert?

Das hier ist das array:



int muster [8] [10] ={  {0,0,0,0,0,0,0,1},
                        {0,0,0,0,0,0,1,0},
                        {0,0,0,0,0,0,1,1},
                        {0,0,0,0,0,1,0,0},
                        {0,0,0,0,0,1,0,1},
                        {0,0,0,0,0,1,1,0},
                        {0,0,0,0,0,1,1,1},
                        {0,0,0,0,1,0,0,0},
                        {0,0,0,0,1,0,0,1},
                        {0,0,0,0,1,0,1,0}};


Hab ich da was falsch gemacht?

von Dauergast (Gast)


Lesenswert?

Markus G. schrieb:
> Kann es sein das Enegia zweidimensionale array`s nicht unterstützt?

Nein, das funktioniert.
Vermutlich gibst Du in Deinem geheimen Code zu viele Initializer an.

von Dauergast (Gast)


Lesenswert?

Dauergast schrieb:
> Vermutlich gibst Du in Deinem geheimen Code

Ok, da habe ich mich getäuscht :)

> zu viele Initializer an.

aber da nicht ... Du gibst 10 Initializer an, hast aber nur 8 Elemente 
definiert - anders ausgedrückt, Du hast die Dimensionen vertauscht.

von Markus G. (hulk85)


Lesenswert?

Eigentlich nur diese 5 :

int shiftPin = P2_0; //Pin verbunden mit SH_CP des 74HC595
int storePin = P2_1; //Pin verbunden mit ST_CP des 74HC595
int dataPin= P2_2; //Pin verbunden mit DS des 74HC595

int j = 0;

int muster [8][10] ={   {0,0,0,0,0,0,0,1},
                        {0,0,0,0,0,0,1,0},
                        {0,0,0,0,0,0,1,1},
                        {0,0,0,0,0,1,0,0},
                        {0,0,0,0,0,1,0,1},
                        {0,0,0,0,0,1,1,0},
                        {0,0,0,0,0,1,1,1},
                        {0,0,0,0,1,0,0,0},
                        {0,0,0,0,1,0,0,1},
                        {0,0,0,0,1,0,1,0}};

+ einen in ner for-Schleife

von Dauergast (Gast)


Lesenswert?

Noch einfacher ausgedrückt, deklariert Du "muster" mit 8 Zeilen zu je 10 
Spalten, initialisierst dann aber mehr als 8 Zeilen. (Das Du nur 8 von 
den 10 Spalten initialisierst, ist dem gcc egal, das fällt erst dem 
Misra-Validator auf.)

von Falk B. (falk)


Lesenswert?

@ Markus Gillhoff (Firma: Fahrzeugelektronik) (hulk85)
1
int muster [8][10] ={   {0,0,0,0,0,0,0,1},
2
                        {0,0,0,0,0,0,1,0},
3
                        {0,0,0,0,0,0,1,1},
4
                        {0,0,0,0,0,1,0,0},
5
                        {0,0,0,0,0,1,0,1},
6
                        {0,0,0,0,0,1,1,0},
7
                        {0,0,0,0,0,1,1,1},
8
                        {0,0,0,0,1,0,0,0},
9
                        {0,0,0,0,1,0,0,1},
10
                        {0,0,0,0,1,0,1,0}};

Falsch. Du definierst ein 8x10 Array, also musst du 8 Einzelarray a 10 
Elementen bereitstellen. Oder deine Definition auf [10][8] ändern.

von Markus G. (hulk85)


Lesenswert?

Oh sorry, da hab ich die beiden vertauscht.

Vielen Dank!

Funktioniert jetzt :-)

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.