2.MRT.2014/HvM;
12. Gebruik altijd symbolische verwijzing
Dit onderwerp en het bestand “CIF.INC” behandel ik ook in de cursussen ‘Toolkit-CCOL’.
Voor meer informatie kunt u mij telefonisch of via het reactieformulier bereiken.
Het gebruik van relatieve verwijzingen past u al toe als het gaat om fasecycli, detectoren, parameters enzovoorts.
Bijvoorbeeld (zie rood vetgedrukt
):
void application(void) |
Maar ook in de definitie van de CVN-interface is rekening gehouden met relatieve verwijzingen. Zo zijn in de array waarin de kloktijd staat de indices ook relatief toegankelijk. Dat maakt het mogelijk om elk onderdeel van de kloktijd op te vragen, zonder te moeten weten in welke index van de tabel CIF_KLOK
dat onderdeel staat.
In het volgende voorbeeld wordt dat duidelijk. In dit voorbeeld is gevraagd om elke start van een minuut een puls te verkrijgen. U zou daarvoor misschien schrijven:
|
Maar in plaats van rechtstreeks naar element “5” te verwijzen, kunt u beter schrijven:
|
Deze symbolische verwijzing heeft een aantal voordelen:
- U kunt zich nooit vergissen in de index van de array CIF_KLOK die u nodig heeft.
- Mocht de CVN-interface om een of andere reden ooit een andere index voor de minuut definiëren, dan weet u met uw symbolische referentie aan
CIF_MINUUT
dat u beslist de minuut opvraagt, en niet per ongeluk de seconde of het uur omdat dat met die veranderde CVN-interface toevallig index 5 is geworden.
Indien zo'n CVN-interfacewijziging daadwerkelijk niet downwards compatible is, dan zal de commissie de exacte schrijfwijze “CIF_MINUUT
” zeker niet handhaven, maar net iets anders schrijven, bijvoorbeeld “CIF_MINUTE
”. Als u dan in uw applicaties steedsCIF_MINUUT
heeft gebruikt in plaats van5
, dan heeft dat voor u als voordeel dat de compiler tenminste een foutmelding geeft dat de verwijzingCIF_MINUUT
niet meer bestaat. Zonder zo'n foutmelding zou u die wijziging beslist niet hebben opgemerkt en er dagen aan kwijt zijn om te zoeken waarom uw applicatie niet doet wat u wilt. Áls u al ontdekt dat er iets fout gaat…
- En bovendien, voor fasecyclus 32 schrijft u toch ook niet
A[14]
alsA[fc32]
veel duidelijker is?
Natuurlijk kent de CVN-interface voor álle elementen van de array CIF_KLOK
een symbolische verwijzing. Hieronder volgt die lijst, en natuurlijk gebruikt u alleen de symbolische namen:
/* CIF_KLOK[ ]: */ |
En als u wilt weten of het vandaag zondag is, gebruikt u niet “3” en “0” maar CIF_DAGSOORT
(tabel hierboven) en CIF_ZONDAG
(tabel hieronder):
/* Dagen van de week: */ |
U schrijft dus NIET: | Maar WEL: | |
if (CIF_KLOK[3] == 0) | if (CIF_KLOK[ |
Zo zijn er nog veel meer tabellen en defines vastgelegd. Wilt u die eens zien? Open dan het bestand “..\CCOL\INCLUDE\CIF.INC” met een normale tekstviewer. Maar let op: verander nooit wat in dat bestand, in het gunstigste geval zal het op straat niet werken!
Dit onderwerp en het bestand “CIF.INC” behandel ik ook in de cursussen ‘Toolkit-CCOL’.
Voor meer informatie kunt u mij telefonisch of via het reactieformulier bereiken.