[elektro] C kérdés plusz

Papp Zoltán zombi at c2.hu
Mon May 19 14:03:28 CEST 2008


2008.05.19. 12:29:08 dátumon Acs Gabor <agabor at electrodesign.hu> írta:

> Ez eddig is világos volt. Én olyasmire gondoltam, hogy írsz pl. egy  
> rekurzív
> függvényt. Az végrehajtja magát 150-szer, majd teljesül valami feltétel,  
> és
> kiugrasz belőle egy gotoval. Biztos, hogy valahol épít egy stack-et a
> fordító, ha nem is a cpu stack területéről van szó. Ilyenkor ottmarad egy
> rakás adat. Következő meghíváskor detto, aztán megint.

Ez le van írva az ANSI C szabványban, hogy csak függvény tözsön belül  
ugorhatsz (azaz más fgv-re nem), továbbá csak olyan blokkba (blokk =  
kapcsos-zárójelek közti utasítások) ugorhatsz, amely helyen nem lett újabb  
változó definiálva ahhoz képest, ahonnan elugrottál. Azaz pl. blokkon  
belül ugorhatsz, de egy blokkba (blokkból) csak akkor ugorhatsz be (ki) ha  
ott újabb változó nem lett definiálva.

Azaz legjobban pl. többszörös ciklusból való kilépésre alkalmas a goto,  
ahol a ciklusokon belül nem definiálsz újabb változókat (azaz pl. for(;;)  
ciklusban sem definiálhatsz újabb változót!).

Bővebben:
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf
6.8.6.1. fejezet


> De Palasik Sanyi azt
> mondta, hogy függvényből nem lehet gotoval kilépni. Ugyan goto-t én  
> legalább
> 20 éve nem használtam (assemblyn kívül), de elhiszem neki, így válasz is
> lett a kérdésre.

Így is van. ld. szabvány.

Üdv

-- 
Papp Zoltán
OneWay Electronics Kft
Hangszerviz



More information about the Elektro mailing list