smyčka void následovaná dalšími “ void ” výrazy

I doufám, že se jedná o jednoduchý požadavek od nováčka v Arduinu a programování. Pochopil jsem, že jakmile program vstoupí do části neplatné smyčky, smyčky se budou nekonečně opakovat. Nedávno jsem však viděl příklady skic, kde po uzavření (by}) neplatné smyčky následuje další sekce void $$$$$. Když to píšu, dívám se na jeden příklad týkající se 7 segmentového displeje, kde „void Num_Write (int)“ následuje po uzavření void smyčky. Pokud to dělá sekce „smyčka“, jak jsem se domníval, jak je přístup k následující sekci?

Děkuji, Rob

Komentáře

odpověď

void loop() sekce je funkce, stejně jako funkce void setup(). Když spustíte program Arduino, naprogramujete jinou funkci, kterou v IDE nevidíte, zavoláte setup() a poté opakovaně zavoláte loop().

Tyto další funkce, které jste viděli, tj. void Num_Write(int n) lze volat buď setup() nebo loop() a před návratem k funkci, která je volala, provedou své pokyny. Je také možné, že Num_Write() může volat jiné funkce, než vrátí ovladač funkci, která volala it.

Typ void se nepoužívá k reprezentaci ničeho (je to ve skutečnosti složitější, ale pro tuto úroveň vysvětlení nic neudělá). Jiné funkce mohou vraťte například jiné typy int, char, bool. Takže pokud bychom měli funkci takto:

int theMeaningOfLife(void) { return 42; } 

Toto je funkce, která vrací int ( umber) takže byste to nazvali takto:

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

Existuje jeden háček, funkce musí být deklarována PŘED jejím použitím, což umožňuje kompilátoru vědět, o čem mluvíš. Nejjednodušší způsob, jak toho dosáhnout, je napsat funkci nad funkci, která ji volá. Druhým způsobem je pouze napsat podpis funkce nad funkci, která ji používá, tj .:

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

Nejlepší způsob (ale u Arduina to není vždy praktické) ) je mít všechny deklarace funkcí v souboru záhlaví (.h) a kód v souboru .cpp. (Podívejte se do knihovny, abyste zjistili, co tím myslím).

Shrnutí

Existuje pouze jedna funkce, která je volána opakovaně, a to je loop. Jelikož funkce vrací prázdnotu, neznamená to, že se bude opakovat opakovaně.

Komentáře

  • Napsali jste: „ funkce musí být deklarována PŘED jejím použitím ”. Arduino IDE ve skutečnosti spouští váš kód prostřednictvím kroku předběžného zpracování, který to provede za vás, což znamená, že to nemusíte dělat sami. Stále bych považoval dobrou praxi za dodržování tohoto pravidla, jen proto, že kód je kompilovatelný mimo IDE, např. s Makefile .
  • @EdgarBonet – Díky, to jsem nikdy nevěděl. Myslím, že bych na to měl zapomenout, jinak to ' začnu zkoušet v práci a nakonec si vytrhnu vlasy a pokusím se zjistit, proč [to] vyhrálo ' kompilace. 🙂

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *