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 PeterS - 18.10.2009 8:57)
Als Antwort auf Re: Mehrdimensionale Arrays von ER - 14.10.2009 12:51
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, CC-Pro 32 Application Board, CC-Pro 128 Application Board, Pro-Bot128
> > > 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)