指针函数
#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 个无法解析的外部命令
全局声明,不要在main函数中声明 本帖最后由 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> jackz007 发表于 2021-3-11 17:00
少了 process() 的函数定义
编译、运行实况:
好的,已经解决了,谢谢 yuxijian2020 发表于 2021-3-11 16:46
全局声明,不要在main函数中声明
谢谢解答 yizhancs 发表于 2021-3-11 17:05
好的,已经解决了,谢谢
解决的话请及时设置最佳答案
页:
[1]