0% found this document useful (0 votes)
10 views

Nested function

C language

Uploaded by

rajashriwadkar68
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

Nested function

C language

Uploaded by

rajashriwadkar68
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Nested functions in C

Last Updated : 05 Sep, 2017



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.

// C program to illustrate the

// concept of Nested function.

#include <stdio.h>

int main(void)

printf("Main");

int fun()
{

printf("fun");

// defining view() function inside fun() function.

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.

// C program of nested function

// with the help of gcc extension

#include <stdio.h>
int main(void)

auto int view(); // declare function with auto keyword

view(); // calling function

printf("Main\n");

int view()

printf("View\n");

return 1;

printf("GEEKS");

return 0;

Output:
view
Main
GEEKS

You might also like