[OPGELOST] Splitsen van NMEAtimezone.ino in twee aparte functies

(deleted)

Timezone_CET.ino (5.59 KB)

Er staat nu

static void DST_CET() {  // Central Europe set Daylight Saving Time
...
static NeoGPS::time_t  changeover;
...
}

Maak daarvan

NeoGPS::time_t  changeover;
....
static void DST_CET() {  // Central Europe set Daylight Saving Time
...
}

De uitleg:
Als je in een functie een variablele definieerd dan is die alleen gekend in die functie. Zo kan je makkelijk steeds weer dezelfde variabele namen gebruiken. Dit noemt men de scope van de variabele.
Elke keer als je inde functie komt wordt de variabele geinitializeerd en is klaarvoor gebruik.

Dat wil zeggen dat elke keer je in de functie komt de waarde op nul (default of waar je ze op zet) gezet wordt en als je uit de functie gaat wordt de variable verwijderd uit het geheugen.

Wil je dat de waarde "onthouden wordt" maar de scope toch tot de functie beperkt blijft voeg je "static" toe aan de variabele declaratie.

Om dus de variablele in een andere functie te kunnen gebruiken moet je de variabele definitie uit de functie brengen. Dat brengt de scope van de variabele op het niveau van de file en kan die dus ook in een andere functie gebruikt worden.
Een gevolg daarvan is dat de waarde van de variablel onthouden wordt. Het woordje static heeft dus geen zin meer. We spreken nu van een globale variabele.

Met vriendelijke groet
Jantje

Merk op dat static op het niveau van een file niks zegt over de "levensduur" van de variablele maar wel over de scope. Bij kleine projecten (zoals arduino sketches) worden variabelen op het niveau van de file bijna nooit static gemaakt.

(deleted)