指向函数的指针?该如何解决

指向函数的指针?
/*指向函数的指针,输入两个数打出较大值或较小值及之和,这题是上课老师那里抄的,漏了些,运行不正确的,大虾们帮我看看,谢谢*/
void   process(int   x,int   y,int   (*fun)());
max   (int   x,int   y);
min   (int   x,int   y);
add   (int   x,int   y);

main()
{
        int   a,b,c,max   ;
        scanf( "%d   %d ",&a,&b);
        process(a,b,max);
        printf( "%d ",);/*这里怎么打出?*/
        getch();


}
        void   process(int   x,int   y,int   (*fun)())
                {
                int   result;
                result   =(*fun)(x,y);
                return(result);
                }

        max   (int   x,int   y)
                {
                return(x> y?x:y);
                }

        min   (int   x,int   y)
                {
                return(x> y?x:y);
                }

        add   (int   x,int   y)
                {int   sum;
                sum=x+y;
                return(sum);
                }



------解决方案--------------------

#include "conio.h "

#undef max
#undef min

int process(int x,int y,int (*fun)(int, int));
int max (int x,int y);
int min (int x,int y);
int add (int x,int y);

void main()
{
int a,b,c;
scanf( "%d %d ",&a,&b);
int r = 0;

r = process(a,b,max);
printf( "max : %d\n ", r);

r = process(a,b,min);
printf( "min : %d\n ", r);

r = process(a,b,add);
printf( "add : %d\n ", r);

getch();


}
int process(int x,int y,int (*fun)(int, int))
{
int result;
result =(*fun)(x,y);
return(result);
}

int max (int x,int y)
{
return(x> y?x:y);
}

int min (int x,int y)
{
return(x> y?y:x);
}

int add (int x,int y)
{
int sum;
sum=x+y;
return(sum);
}


------解决方案--------------------
void process(int x,int y,int (*fun)(int, int));
int max (int x,int y);
int min (int x,int y);
int add (int x,int y);

main()
{
int a,b,c;
scanf( "%d %d ",&a,&b);
c=process(a,b,max);
printf( "%d ",);/*这里怎么打出?*/
getch();


}
void process(int x,int y,int (*fun)(int,int))
{