M.S Chaudhari M.S Chaudhari - 10 months ago 41
C Question

Why can't we define function inside the main function?

In the following program, I try to call the function

and inside
, try to call
function which is defined in the
function, but when I compile, I get the error below:

In function `n':
(.text+0xa): undefined reference to `m'
error: ld returned 1 exit status

Why do I get an error? Please explain.

The code is here:

#include <stdio.h>
void m();
void n()

void main()
void m()

Answer Source

m is defined inside of main. In standard C, that's not allowed (you can't define a function within another function).

Some compilers (e.g. gcc) allow it as an extension. But then the function is local, i.e. m only exists within main and can't be seen from the outside. Similarly, variables defined within a function are local to that function and can't be seen from the outside.

Your void m(); declaration at the top claims that a (global) function called m exists, but it doesn't. That's why you get the linker error.