Re: Mehrdimensionale Arrays Kategorie: Programmierung C (von PeterS - 18.10.2009 8:57) | ||
Als Antwort auf Re: Mehrdimensionale Arrays von ER - 14.10.2009 12:51 | ||
| ||
> > > 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 | ||
Antwort schreiben Antworten: Re: Mehrdimensionale Arrays (von ER - 21.10.2009 20:59) Re: Mehrdimensionale Arrays (von PeterS - 22.10.2009 14:54) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum