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