bucla void urmată de alte “ void ” expresii

I sper că aceasta este o cerere simplă de la un nou venit la Arduino și programare. Am înțeles că, odată ce un program intră într-o secțiune de buclă goală, acesta se învârte în mod nedefinit. Cu toate acestea, am văzut recent exemple de schițe în care o altă secțiune nulă $$$$$ urmează închiderea (de}) a buclei de gol. În timp ce scriu acest lucru, mă uit la un exemplu referitor la un afișaj pe 7 segmente în care „void Num_Write (int)” urmează închiderii buclei void. Dacă secțiunea „buclă” face exact asta, așa cum am fost convins, cum se accesează o secțiune următoare?

Mulțumesc, Rob

Comentarii

Răspuns

void loop() secțiunea este o funcție, la fel ca void setup() este o funcție. Când porniți programul Arduino, programați o altă funcție pe care nu o puteți vedea în IDE, apelați setup() și apoi apelați loop() în mod repetat.

Aceste alte funcții pe care le-ați văzut, adică void Num_Write(int n) pot fi apelate fie de la setup(), fie de la loop() și își vor executa instrucțiunile înainte de a reveni la funcția care le-a chemat. Este, de asemenea, posibil ca Num_Write() să apeleze alte funcții înainte ca acesta să revină controlerului la funcția care a apelat it.

Tipul void este folosit pentru a reprezenta nimic (este de fapt mai complex decât asta, dar pentru acest nivel de explicație nimic nu va face). Alte funcții pot returnează alte tipuri int, char, bool de exemplu. Deci dacă am avea o funcție așa:

int theMeaningOfLife(void) { return 42; } 

Aceasta este o funcție care returnează un int (un umber) deci l-ați numi astfel:

void setup() { int number = theMeaningOfLife(); } 

Există o singură captură, funcția trebuie declarată ÎNAINTE de a fi utilizată, acest lucru permite compilatorului să știi la ce te referi. Cel mai simplu mod de a face acest lucru este să scrieți funcția deasupra funcției care o numește. A doua modalitate este să scrieți doar semnătura funcției deasupra funcției folosind-o, adică:

int theMeaningOfLife(void); void setup() { int number = theMeaningOfLife(); } 

Cel mai bun mod (dar nu întotdeauna practic pe un Arduino ) este de a avea toate declarațiile funcționale într-un fișier antet (.h) și codul într-un fișier .cpp. (Aruncați o bibliotecă pentru a vedea ce vreau să spun).

Rezumat

Există o singură funcție care este apelată în mod repetat și care este loop funcție. Doar pentru că o funcție returnează anularea nu înseamnă că se va repeta în mod repetat.

Comentarii

  • Ați scris: „ funcția trebuie declarată ÎNAINTE de a fi utilizată ”. De fapt, IDE-ul Arduino rulează codul dvs. printr-o etapă de pre-procesare care face asta pentru dvs., ceea ce înseamnă că nu trebuie să o faceți singur. Încă aș considera o bună practică pentru a respecta această regulă, doar pentru că face codul compilabil în afara IDE, de ex. cu un Makefile .
  • @EdgarBonet – Mulțumesc, nu am știut asta niciodată. Cred că ar trebui să-l uit, altfel, în caz contrar, ' voi începe să încerc la locul de muncă și voi sfârși prin a-mi scoate părul încercând să aflu de ce [a] câștigat ' nu compilați. 🙂

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *