C语言的简易计算器出现link错误

这个出现了link错误,我尝试了去改但还是没有找到是哪里的问题,希望有大佬帮忙看看,拜托拜托

#include<stdio.h>

extern char stack[100];//当做一个栈使用,存储运算符

extern int rank[100];

void ranks();//确定优先级

void push(char a,int *top);//输入栈中

char pop(int *top);//从栈输出

int input(char a[]);//接受输入数据

void postexpression(char a[],int n,char res[],int *top,int *k);//转化为后缀表达式

void operation(char res[],int *top,int *k);//后缀表达式求值

int mian()

{ int x=-1,*top=&x;

int y=0,*k=&y;

char a[50],res[50];

int n;

n=input(a);ranks();

postexpression(a,n,res,top,k);

operation(res,top,k);return 0;}

void ranks()

{rank['(']=0; rank['+']=1;

rank['-']=1;rank['*']=2;rank['/']=2;}

void push(char a,int *top){*top++;stack[*top]=a;}

char pop(int *top)

{char ch;ch=stack[*top];*top--;return ch;}

int input(char a[])

{int i=0;char c;printf("简易计算器\n");

printf("请输入表达式:");c=getchar();

while(c!='\n')

{ a[i++]=c; c=getchar();}return i;}

void postexpression(char a[],int n,char res[],int *top,int *k)

{int i=0;char x;for(i=0;i<n;i++)

{ if(a[i]>='0'&&a[i]<='9')

{ res[*k++]=a[i]; }

else if(a[i]=='(')

{ push(a[i],top); }

else if(a[i]==')')

{ x=pop(top); while(x!='(')

{ res[*k++]=x; x=pop(top); } }

else { res[*k++]='#';

while(*top>-1&&rank[a[i]<=rank[stack[*top]])

{res[*k++]=pop(top);} push(a[i],top); } while(*top>-1)

{res[*k++]=pop(top); }}}

void operation(char res[],int *top,int *k)

{ int i=0;int t[10],z=-1;while(i<*k)

{ if(res[i]>='0'&&res[i]<='9')

{ z++; t[z]=res[i]-48; i++; while(res[i]>='0'&&res[i]<='9')

{ t[z]=t[z-1]*10+t[z]-48; i++; } }

else if(res[i]=='#') {i++;}

else { switch(res[i])

{ case '+': t[z-1]=t[z]+t[z-1];z--;break;

case '-': t[z-1]=t[z-1]-t[z];z--;break;

case '*': t[z-1]=t[z]*t[z-1];z--;break;

case '/': t[z-1]=t[z-1]/t[z];z--;break; } i++; }}printf("运行结果为:%d\n",t[z]);}

 

参考GPT和自己的思路:

在你提供的代码中,有一个函数名称拼写错误,应该修改为"main",而不是"mian"。你需要在此处做出修正,并重新编译代码,看一下是否还有其他错误出现。如果还有其他错误请及时反馈。