|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int max(int, int);
int min(int, int);
int add(int, int);
int main()
{
void process(int, int, int(*fun)(int, int));
int a, b;
printf("请输入a与b的值:\n");
scanf("%d %d", &a, &b);
printf("max = \n");
process(a, b, max);
printf("min = \n");
process(a, b, min);
printf("add = \n");
process(a, b, add);
}
int max(int a, int b)
{
int z;
if (a > b)
z = a;
else
z = b;
return z;
}
int min(int a, int b)
{
int z;
if (a > b)
z = b;
else
z = a;
return z;
}
int add(int a, int b)
{
int z;
z = a + b;
return z;
}
用VS2017编译时出现错误:
error LNK2019: 无法解析的外部符号 "void __cdecl process(int,int,int (__cdecl*)(int,int))" (?process@@YAXHHP6AHHH@Z@Z),该符号在函数 _main 中被引用
fatal error LNK1120: 1 个无法解析的外部命令
本帖最后由 jackz007 于 2021-3-11 17:02 编辑
少了 process() 的函数定义 #include <stdio.h>
int max(int a, int b)
{
int z;
if (a > b)
z = a;
else
z = b;
return z;
}
int min(int a, int b)
{
int z;
if (a > b)
z = b;
else
z = a;
return z;
}
int add(int a, int b)
{
int z;
z = a + b;
return z;
}
int process(int a , int b , int(* fun)(int , int)) // 少了这个函数定义,注意,这个函数的返回类型要和 max()、min()、add() 的一致,不可以是 void
{
return fun(a , b) ;
}
int main()
{
int a , b ;
printf("请输入a与b的值: ") ;
scanf("%d%d" , & a , & b) ;
printf("max = %d\n" , process(a , b , max)) ;
printf("min = %d\n" , process(a , b , min)) ;
printf("add = %d\n" , process(a , b , add)) ;
}
编译、运行实况: D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
请输入a与b的值: 9 99
max = 99
min = 9
add = 108
D:\0002.Exercise\C>
|
|