Probleem met Functies aanroepen

algemene C code
Berichten: 30
Geregistreerd: 14 Dec 2018, 14:39

Probleem met Functies aanroepen

Berichtdoor FTMZ » 23 Aug 2020, 22:10

Hallo Mensen,

Ik probeer wat grip te krijgen op het aanroepen van Functies maar ik lijk ergens iets niet goed te doen.
Ik had al wat rondgezocht maar als ik de voorbeelden overzet naar mijn eigen plan (toegegeven ik heb ze niet 1 op 1 gecopieerd), gaat er ergens toch wat fout.

Code: Alles selecteren
void setup() {
  // put your setup code here, to run once:
Serial.begin (9600);
unsigned int Keyl;

}

void loop()
{
  // put your main code here, to run repeatedly:
 
 KEY(); 
 
 Serial.print(Keyl);
 delay 500;
 
}

void KEY()

  Keyl = 4;
}   


Puur wat experimenteren.
Ik heb een loopje wat elke keer een functie oproept ( KEY() ), waarbij de variabele Keyl de waarde 4 krijgt.
Ik weet het... inhoudelijk slaat het nergens op, maar ik moet ergens beginnen zodat ik het kan uitbouwen. ;)

Als ik naar de voorbeelden kijk, zie ik niet wat ik fout doe.
Toch krijg ik de melding dat "Keyl"... is not declared in this scope

Wat doe ik fout?

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Probleem met Functies aanroepen

Berichtdoor Koepel » 24 Aug 2020, 03:15

Het woord voor vandaag is: "scope".
Dat is (vrij vertaald) of een variabele binnen het zichtbereik van compiler is.
Als de compiler binnen jouw functie KEY() zit, dan ziet de compiler de variabele Keyl niet. De compiler kan dan niet verder.

Een variabele binnen de setup() functie is een lokale variabele die alleen bekend is binnen de setup() functie.

Als je een variabele boven de setup() functie declareert, dan is het een globale variabele die je overal kunt gebruiken.

Berichten: 30
Geregistreerd: 14 Dec 2018, 14:39

Re: Probleem met Functies aanroepen

Berichtdoor FTMZ » 24 Aug 2020, 21:50

Ah, op die manier...
Ken je dat gevoel dat je een kaartje moet pakken bij kwartetten en dat je dan onbedoeld een ander setje compleet hebt?
Dat dus. :mrgreen: :mrgreen:

Dat verduidelijkt ook heel veel tav die globale variabelen.
Maar nu snap ik het! Zodra ze binnen zo'n VOID() {} loop vallen, zijn het lokale variabelen...
Lijkt me mega verwarrend, maar goed. :)

Ik dacht overigens dat een unsigned variabele daar de oplossing voor was.
Want ik had voorzichtig al zo'n vermoeden dat het iets met local te maken had.
Maar niet zoals ik dat verwachtte.

Tx...

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Probleem met Functies aanroepen

Berichtdoor nicoverduin » 26 Aug 2020, 15:06

FTMZ schreef:Zodra ze binnen zo'n VOID() {} loop vallen, zijn het lokale variabelen...
Lijkt me mega verwarrend, maar goed. :)


Je maakt het zelf nog verwarrender door het over een void te hebben.
Bij C/C++ en nog meerdere talen hebben we het over functies. De notatie is

wat_geeft_de _functie_terug functie_naam ( 0_1_of_meerdere_parameters) {

}

Wat vet gedrukt is, is altijd verplicht. Dus het woordje void = niets = wat je teruggeeft. En dan weten wij niet waar je het over hebt. Die void had ook een int kunnen heten of float of char...
We hebben het dus over een functie. Je doet er goed aan om de juiste terminologie aan te leren. Dan begrijpt iedereen waar je het over hebt.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 12 gasten