Re: Mehrdimensionale Arrays Kategorie: Programmierung C (von PeterS - 22.10.2009 14:54) | ||
Als Antwort auf Re: Mehrdimensionale Arrays von ER - 21.10.2009 20:59 | ||
| ||
> > > > > Hallo, > > > > > > > > > > ich bin von C-Control I auf C-Control Pro MEGA128 umgestiegen. Ich programmiere in CompactC. > > > > > > > > > > Ich möchte eine Ablaufsteuerung aufbauen. Dazu habe ich "früher" häufig mit den Tabellen > > > > > (Table-Anweisung) gearbeitet. > > > > > > > > > > Nun habe ich in C versucht, dies mit Arrays nachzubilden. > > > > > > > > > > Ich sto�e jedoch ständig auf Schwierigkeiten! > > > > > > > > > > Mehrdimensionale Arrays können nicht referenziert werden!!. Parameterübergaben gehen > > > > > nur bei eindimensionalen Arrays. Als Rückgabewerte einer Funktion kann man sie > > > > > nicht verwenden. Dynamisch (Grö�enangabe durch Variablen) kann man sie nicht > > > > > erstellen, es exestieren keine Funktionen um die Dimensionen eines Arrays ermitteln > > > > > zu können und und und... > > > > > > > > > > Eine sinnvolle alternative für meine Ablaufsteuerung wäre noch Struc(turen) zu benutzen. > > > > > Geht nicht! > > > > > Vieleicht habe ich ja auch aufs falsche Pferd gesetz. Habt ihr noch einen Hinweis? > > > > > > > > > > Vielen Dank! > > > > > > > > Ja es gibt Einschränkungen, aber es ist immer noch mehr möglich als auf der C-Control I, > > > > dort hat man nur globale statische ein-dimensionale Arrays vom Typ Word. Ich überlege noch wie > > > > man Referenzen übergeben und zurückgeben kann, ohne die komplette Pointerarithmetik mit > > > > einzubauen. > > > > > > > > Dynamisch (Grö�enangabe durch Variablen) gehen nur mit den C99 Standard und auch dort nur lokal, > > > > weil sie auf dem Stack angelegt werden. Der Speicher ist zu klein um sinnvoll mit einem Heap > > > > zu arbeiten. Der C-Control Pro Compiler kann sich nicht mit einem kommerziellen Compiler > > > > messen, und selbst die unterstützen grö�tenteils nicht C99. Wenn Du das alles haben willst, mu�t > > > > Du schon den GNU Compiler benutzen. > > > > > > > > Gruss Peter > > > > > > > > > > > > > > Fred > > > > > > Hallo Fred, > > > ich habe auch viel mit der CC1 gearbeitet und auch mit LOOKTAB. > > > Die CC Pro kann keine mehrdimensionalen flash arrays. > > > Ich habe aber eine Lösung gefunden, mit der ich leben kann. > > > > > > > > > > > > // Table komplett definieren und ab ins flash: > > > flash byte match1[8] = {16, 244, 35, 78, 1, 8, 0, 203}; > > > flash byte match2[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match3[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match4[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match5[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match6[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match7[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match8[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match9[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match10[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match11[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match12[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > flash byte match13[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > > > > > > // 1 Zeile im Ram definieren > > > byte array1[8]; // Schmierarray > > > > > > // 1 Zeile vom flash ins Ram kopieren und verarbeiten > > > array1 = match1 > > > > > > Anders gehts leider nicht > > > > > > mfg Ellen > > > > > > > > > > > > > Wieso keine mehrdimensionallen Arrays? Klar geht das: > > > > flash byte fglob[2][2]={10,11,12,13}; > > > > > > Gruss Peter > > Hallo Peter, > ich hab meinen Beitrag vom 15.8. gelesen. > Dur hast natürlich recht. > > Das Problem ist folgendes. > > Du musst mindestens soviel RAM bereitstellen, wie das Flash array gro� ist. > Mit 1 k Ram geht das Problem schon los. > Auf das flash array kannst Du nicht indiziert zugreifen und keine strukturierte > Programmierung machen. Fred hat das auch erkannt. > Ist das mit der IDE 2.1 erledigt? Nope. Werde ich aber bis Ende Januar in Angriff nehmen. Gruss Peter > > Die Anweisung LOOKTAB bei der CC1 bietet die Möglichkeit 1 dimensional > auf Tabellen zu zugreifen. > > Gru� > Ellen > > > > > > | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum