User manual

5.8.5 Typetest
De C2 – compiler voert bij elke oproep van een functie een test uit, of naast het aantal parameters ook
het desbetreffende type overeenkomt met de functiedefinitie. Een kenmerk van een string – variabele kan
bijvoorbeeld niet doorgegeven worden, als er volgens de definitie op deze plaats een numerieke term
verwacht wordt.
De volgende type –comptabiliteitsregels gelden:
Type van de formele parameter
in de functiekop
Toelaatbare actuele parameters bij het oproepen
van een functie
byte, int, long, float Willekeurige numerieke term
byte [ ] Kenmerk van een byte – array - variabele *)
Kenmerk van een string – variabele
Geïndiceerd kenmerk van een string – array - variabele
int [ ] Kenmerk van een int – array - variabele *)
long [ ] Kenmerk van een long - array - variabele *)
float [ ] Kenmerk van een float - array - variabele *)
String Onbenoemde string – constante
Kenmerk van een string – variabele
Geïndiceerd kenmerk van een string – array - variabele
Kenmerk van een string – constante
Geïndiceerd kenmerk van een string – arrayconstante
string [ ] Kenmerk van een string – array - variabele *)
samengesteld type, b.v.
MyType
Kenmerk van een MyType – variabele
Geïndiceerd kenmerk van een MyType – array - variabele
MyType [ ] Kenmerk van een MyType – array - variabele *)
*) Verwijzingen naar constante arrays mogen niet aan functies doorgegeven worden.
5.8.6 Recursie
Een functie kan zich theoretisch ook zelf oproepen. Dat wordt aangeduid als recursie. Sommige
wiskundige benaderingen berusten op recursieve algoritmen met afbreekbeperkingen.
C2 verbiedt recursieve functie –oproepen niet uitdrukkelijk, maar ze dienen echter vermeden te
worden.
Recursies leiden vanaf een bepaalde diepte steeds tot overschrijding van het stackbereik dat voor een
thread gereserveerd is. Dan worden data van andere threads ongewild overschreven. Dit kan leiden tot
locale fouten tot zelfs het totaal crashen van het gehele systeem van de C-Control II unit!
5.8.7 Inline – functies en –opdrachten
De bibliotheekmodules voor de toegang tot de bronnen van de C-Control II unit (b.v. hwcom.c2)
gebruiken
inline
– functies en –opdrachten voor het rechtstreeks invoegen van virtuele machinecodes in
de programma – brontekst. Er geldt dat
inline
functies alleen
inline
–opdrachten mogen bevatten. In
een
inline
–opdracht moet na het codewoord een constante term staan, die voor een operatiecode staat
(zie 4.4.2).
Alleen de C2 – systeemontwikkelaars hebben inline –functies en opdrachten nodig. Een
uitvoerige documentatie van de aparte operatie – codes van de virtuele machine vormt
geen onderdeel van de leveringsomvang van de C-Control II unit.
5.9 Threads
5.9.1 Definitie
Threads worden op moduleniveau gedefinieerd en zijn na de definitie globaal zichtbaar. Er zijn geen
geneste threads binnen threads en geen locale threads binnen subfuncties. De definitie van een thread
begint met het codewoord
thread
. Dan volgen het kenmerk en een opdrachtblok tussen accolades.
thread
Name
{
/ / opdrachten
}