Here we are initalising the function pointer p to the address of the function fun(). But during this initialisation the function has not been defined. Hence an error.
To eliminate this error add the prototype of the fun() before declaration of p, as shown below:
extern int fun(); or simply int fun();