|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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>
复制代码
|
|