Some programmer thinks that defining a function inside an another function is known as “nested function”. But the reality is that it is not a nested function, it is treated as lexical scoping. Lexical scoping is not valid in C because the compiler cant reach/find the correct memory location of the inner function.
Nested function is not supported by C because we cannot define a function within another function in C. We can declare a function inside a function, but it’s not a nested function.
Because nested functions definitions can not access local variables of the surrounding blocks, they can access only global variables of the containing module. This is done so that lookup of global variables doesn’t have to go through the directory. As in C, there are two nested scopes: local and global (and beyond this, built-ins). Therefore, nested functions have only a limited use. If we try to approach nested function in C, then we will get compile time error.
#include <stdio.h>
int main( void )
{
printf ( "Main" );
int fun()
{
printf ( "fun" );
int view()
{
printf ( "view" );
}
return 1;
}
view();
}
|
Output:
Compile time error: undefined reference to `view'
An extension of the GNU C Compiler allows the declarations of nested functions. The declarations of nested functions under GCC’s extension need to be prefix/start with the auto keyword.
#include <stdio.h>
int main( void )
{
auto int view();
view();
printf ( "Main\n" );
int view()
{
printf ( "View\n" );
return 1;
}
printf ( "GEEKS" );
return 0;
}
|
Output:
view
Main
GEEKS
Last Updated :
05 Sep, 2017
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...