Is it intended that the GCC C compiler support nested functions?
I would like to know so that I can determine whether to file bug reports
against other projects for nested function use.
---- Begin Nested Function example
void foo(void) {
void bar(void) {
puts("Bar");
}
puts("Foo");
bar();
}
---- End Nested Function example
The last I heard, the ANSI (ISO) C language specification prohibited nested
functions. I have been looking at the code for GRUB, another GNU project, and
noticed that there are several instances of nested functions. I asked one of
the maintainers of GRUB and received the following response which implies that:
1) the GCC C compiler is intended to support nested functions
2) Grub (and possibly other GNU projects) are written in "GNU C" and not
intended to be compiled with other compilers.
---- Begin Quote
> 2) grub/asmstub.c :: grub_stage2()
> This function knowingly uses a nested function. Nested
> functions are prohibited by the ISO-C and C++ language
> specifications. Conformant compilers will blow up.
It seems that grub is written in GNU C, not ISO-C. So it is not intended
to be compiled by other compilers. There is many nested functions used
in grub source code. So, don't worry about that.
---- End Quote
Thank You,
Daryl McDaniel
SSG/SSD/Platform Software Infrastructure
JF1-235
+1 503-712-4670
Simple clear purpose and principles give rise to complex and intelligent
behavior.
Complex rules and regulations give rise to simple and stupid behavior.
-- Dee Hock