fv-ben fv

Fórumok

Egy kerdest kaptam, es nem tudok valaszolni:


void f1() {
  void f2() {
    printf("ize\n");
    }
  f2();
  printf("ecet\n");
}

Ez valami nested fv nevu gcc bovitmeny. Letezik-e ez valamelyik ujabb C-szabvanyban? (Ha igen, akkor melyikben es mi ertelme van? )

Hozzászólások

Azok után, amit ma láttam, már semmin sem csodálkozom.*

Anélkül, hogy valaha is használtam volna, ennek szerintem az az értelme, hogy az f2 fg-t az f1-en belül definiálod, a láthatósága csak az f1-re terjed, és a többi függvényből nem is tudod elérni. Hogy ez mennyiben javítja az olvashatóságot, a program átláthatóságát, azt mindenki döntse el maga ;)

* kivonatosan:

switch (state_in->step)
{
while (1)
{
case step_a:
case step_b:
case step_c:
case step_d:
}
}

--
http://www.open-st.eu

azannya
Hogy precív legyek, egy do ciklust belehányni egy switch közepibe ilyetén módon, az valahogy nekem a perverzitás fogalomkörébe tartozik, és mint ilyen, valószínűleg sűrűn csuklana a mamája annak, aki nekem ilyen kódot rak az orrom alá. De ez persze csak annyit jelent, hogy lemaradtam elméleti programozás órán.

link

a lathatosag cigany megoldasa :)

---
Egy jól megállapított probléma félig megoldott probléma.
- Charles Kettering

ugy tudom gcc specifikus, es raadasul kavaras van a stack-ben is miatta ami miatt ujabban kernel tamogatas is kell hozza

A'rpi

Valszeg az az értelme, hogy az implementálással a világ nem tudja elfelejteni, hogy valaha is létezett Pascal nevű programnyelv, és annak "először jó ötletnek tűnt" fícsörei.

GCC only feature, és mint ilyen eleve kerülendő.

Értelmesnek tűnő felhasználási módja lehet, ha pl így definiálunk egy összehasonlító fv-t a qsort vagy bsearch meghívásához, de nem akarjuk, hogy ez máshonnan elérhető legyen.

Egyébként meg: http://en.wikipedia.org/wiki/Nested_function

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee." -- Ted Ts'o

Miért használna valaki C-t, amikor C++-it is használhat? Ahol van értelme a C-nek (linugz kernel, beágyazott rendszerek) ott könnyen lehet, hogy nem (csak) gcc-vel fogsz fordítani, akkor meg ez a fícsör használhatatlan, jobb nyelvekben meg van rá külön eszköz.
----
India delenda est.
Hülye pelikán