Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Mehrdimensionale Arrays Kategorie: Programmierung C (von ER - 21.10.2009 20:59)
Als Antwort auf Re: Mehrdimensionale Arrays von PeterS - 18.10.2009 8:57
Ich nutze:
C-Control Pro Mega32
> > > > 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?

Die Anweisung LOOKTAB bei der CC1 bietet die Möglichkeit 1 dimensional
auf Tabellen zu zugreifen.

Gruß
Ellen








    Antwort schreiben


Antworten:

Re: Mehrdimensionale Arrays (von PeterS - 22.10.2009 14:54)