Kto wie że kompilator C z kolekcji kompilatorów GNU pozwala na zagnieżdżanie funkcji wewnątrz sobie ? Mechanizm ten obcy języką programowania nie jest, ma go między innymi Pascal… A natknąłem się na to rozszerzenie poszukując podobnego rozszerzenia składni dla C++ (niestety nie ma…). Mały przykład “cp i jak”:
#include <stdio.h>
void funckja() {
int poziom = 0;
__GNUC__; void podfunkja() {
++poziom;
__GNUC__; void kolejna_podfunckja() {
++poziom;
printf("Podfunkcja o poziomie zagnieżdzenia: %d\n", poziom);
}
kolejna_podfunckja();
}
podfunkja();
}
int main(int argc, char *argv[]) {
funckja();
return 0;
}
Kilka uwag:
- Przed deklaracją zagnieżdzanej funkcji musimy dodać __GNUC__;
- Maksymalny poziom zagnieżdżenia funkcji to 4
- Z racji że jest to rozszerzenie języka wprowadzone przez gcc, kod nie skompiluje się na innym kompilatorze…
