ogiltig slinga följt av andra “ ogiltigt ” uttryck

I hoppas att detta är en enkel begäran från en nykomling till Arduino och programmering. Jag har förstått att när ett program går in i en tomrumsdel, slingrar det sig på obestämd tid. Men jag har nyligen sett exempel på skisser där ett annat ogiltigt $$$$$-avsnitt följer stängningen (av}) av tomrumsslingan. När jag skriver detta tittar jag på ett exempel som rör en 7-segmentskärm där ”void Num_Write (int)” följer stängningen av tomrumsslingan. Om ”loop” -avsnittet gör just det, som jag har fått tro på, hur får du åtkomst till följande avsnitt? class = ”comments”>

  • Genom att ringa det. tutorialspoint.com/cplusplus/cpp_functions.htm
  • Det ' omfattas också av Arduino-referens: arduino.cc/sv/Reference/FunctionDeclaration
  • Till råga på: cplusplus.com/doc/tutorial/funktioner
  • Svar

    void loop() avsnittet är en funktion, samma som void setup() är en funktion. När du startar programmerar du Arduino en annan funktion som du inte kan se i IDE, ring setup() och ringer sedan loop() upprepade gånger.

    Dessa andra funktioner du har sett, dvs. void Num_Write(int n) kan anropas från antingen setup() eller loop() och de kommer att utföra sina instruktioner innan de återvänder till funktionen som kallade dem. Det är också möjligt att Num_Write() kan ringa andra funktioner innan den återställer styrenheten till den funktion som ringde det.

    Typen void används för att representera ingenting (det är faktiskt mer komplicerat än det, men för denna förklaringsnivå kommer ingenting att göra). Andra funktioner kan returnera andra typer int, char, bool till exempel. Så om vi hade en funktion så här:

    int theMeaningOfLife(void) { return 42; } 

    Detta är en funktion som returnerar en int (en umber) så du skulle kalla det så här:

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

    Det finns en fångst, funktionen måste deklareras INNAN den används, detta gör att kompilatorn kan vet vad du hänvisar till. Det enklaste sättet att göra detta är att skriva funktionen ovanför funktionen som kallar den. Det andra sättet är att bara skriva funktionens signatur ovanför funktionen med den, dvs:

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

    Det bästa sättet (men inte alltid praktiskt på en Arduino ) är att ha alla funktionsdeklarationer i en rubrikfil (.h) och koden i en .cpp-fil. (Titta i biblioteket för att se vad jag menar).

    Sammanfattning

    Det finns bara en funktion som kallas upprepade gånger och det är loop -funktion. Bara för att en funktion returnerar ogiltig betyder det inte att den kommer att slinga upprepade gånger.

    Kommentarer

    • Du skrev: “ funktionen måste deklareras INNAN den används ”. Egentligen kör Arduino IDE din kod genom ett förbehandlingssteg som gör det åt dig, vilket innebär att du inte behöver göra det själv. Jag skulle fortfarande överväga god praxis att hålla mig till denna regel, om bara för att det gör koden sammanställbar utanför IDE, t.ex. med en Makefile .
    • @EdgarBonet – Tack, det visste jag aldrig. Jag tror dock att jag borde glömma det, annars kommer jag ' att börja prova på jobbet och sluta dra ut håret och försöka ta reda på varför [det] vann ' t kompilera. 🙂

    Lämna ett svar

    Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *