User manual
181 C-Control Pro IDE
© 2013 Conrad Electronic
Arrays dürfen in CompactC bis zu 16 Indizes (Dimensionen) haben. Der Maximalwert für einen
Index ist 65535. Die Indizes der Arrays sind immer nullbasiert, d.h., jeder Index beginnt mit 0.
Nur wenn die Compiler Option "Array Index Grenzen prüfen" gesetzt ist, findet während des Pro-
grammlaufs eine Überprüfung statt, ob die definierte Indexgrenze eines Arrays überschritten wurde.
Wird ansonsten der Index während der Programmabarbeitung zu groß, so wird auf fremde Variablen
zugegriffen, und die Chance ist groß, daß das Programm "abstürzt".
Tabellen mit vordefinierten Arrays
Seit Version 2.0 der IDE können Arrays mit Werten vorbelegt werden:
byte glob[10] = {1,2,3,4,5,6,7,8,9,10};
flash byte fglob[2][2]={10,11,12,13};
void main(void)
{
byte loc[5]= {2,3,4,5,6};
byte xloc[2][2];
xloc= fglob;
}
Da bei der C-Control Pro Unit mehr Flash als RAM Speicher zur Verfügung steht, kann man mit
dem flash Befehlswort Daten definieren, die nur im Flashspeicher stehen. Diese Daten können dann
durch eine Zuweisung auf ein Array im RAM mit gleichen Dimensionen kopiert werden. Im Beispiel
ist dies: "xloc= fglob". Diese Art der Zuweisung gibt es nicht in normalem "C".
Direkter Zugriff auf flash Array Einträge
Seit Version 2.12 ist es möglich auf einzelne Einträge in flash Arrays zuzugreifen:
flash byte glob[10] = {1,2,3,4,5,6,7,8,9,10};
void main(void)
{
int a;
a= glob[2];
}
Eine Begrenzung bleibt bestehen: Nur normale Arrays die im RAM liegen, können als Referenz
einer Funktion übergeben werden. Dies ist mit Referenzen auf flash Arrays nicht möglich.
Strings