免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2994 | 回复: 11
打印 上一主题 下一主题

[C] 请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-29 16:57 |只看该作者 |倒序浏览
有几个结构,每个结构都对应着几个处理。这些处理,在顺序和结构上,都一样。但是处理的函数,和用到的变量都不一样。有什么办法,能够减少代码量,用一个函数来实现所有这些结构的处理。

比如,下面代码:

  1. funciton(){
  2.     int type;
  3.     RESULT1 result1;
  4.     RESULT2 result2;
  5.     PAR1 par1;//PAR1 和PAR2是不同的类型
  6.     PAR2 par2;
  7.    switch(type)
  8.     case 0://每个case里面的处理都一样。希望把switch去掉。
  9.        .........
  10.         result1=subfunction1(par1);
  11.     case 2:
  12.        ..........
  13.         result2=subfunction2(par2);
  14. }

  15. 是否能够把上面的函数实现为:

  16. function(void* pFunction,void* par,void* result){
  17.       result=pFunction(par);
  18. }
  19. 也就是最后,不需要switch来判断类型了。

  20. 调用这个函数的时候,通过指针数组。
  21. 比如

  22. function(pFuction[i],pPar[i],pResult[i]);
复制代码

这样,只要确定了i之后,就能够用一个代码量很小的函数来实现了。

论坛徽章:
0
2 [报告]
发表于 2003-09-29 17:31 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

就用你自己这种写法就可以实现你所要求的功能。

C语言的函数也是可定义成一种数据类型。

如:
函数: int  aaa( void );

变量定义:
     int  ( * func ) ( void );

那么下面语句:
    func = aaa;  func();
的功能等于:
   aaa();

论坛徽章:
0
3 [报告]
发表于 2003-09-29 19:20 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

但是函数里面的参数,有可能不一样.怎么办

论坛徽章:
0
4 [报告]
发表于 2003-09-29 20:08 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

用宏不知道好不好.....

论坛徽章:
0
5 [报告]
发表于 2003-09-29 21:52 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

用C++,

论坛徽章:
0
6 [报告]
发表于 2003-09-30 11:34 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

如果是一个参数,就用void *类型,
否则用可变参不就可以。
对了,不知道里面的函数是自己写的还是别人的库函数?

论坛徽章:
0
7 [报告]
发表于 2003-09-30 13:40 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

不建议用c做这种事情!如果缺少类型检查,系统会很脆弱。

论坛徽章:
0
8 [报告]
发表于 2003-09-30 14:14 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

homeend0 ,你说的void* 和可变参,是怎么用的。我没有用过。

论坛徽章:
10
CU大牛徽章
日期:2013-09-18 15:20:48程序设计版块每日发帖之星
日期:2016-07-21 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:01技术图书徽章
日期:2014-10-14 16:00:43天蝎座
日期:2013-09-27 17:41:29CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58每日论坛发贴之星
日期:2016-07-21 06:20:00
9 [报告]
发表于 2003-09-30 14:40 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

函数重载就行了

论坛徽章:
0
10 [报告]
发表于 2003-09-30 16:16 |只看该作者

请教C语言编程技巧——如何在同一个函数内实现不同函数的掉用。

象int printf(const char *format, .../* args */);
这个函数就是可变参。有兴趣了解可找相关的资料。
SCO 5.0.5 系统下目录/usr/include/varargs.h 和 /usr/include/stdarg.h
是两种可变参的声明。主要的函数如vfprintf等
我的QQ号是:3883626
有机会可以互相学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP