mingge
驱动小牛
驱动小牛
  • 注册日期2004-03-19
  • 最后登录2004-11-22
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1795回复:4

求教:c语言中函数重用

楼主#
更多 发布于:2005-06-20 09:49
  在c++中函数是可以重用的,但是我是在标准c来开发。
现在遇到一个问题,为几个不同的结构体类型创建链表,
这样,这几个函数结构就很一模一样,只是参数不同。
我把这几个类型定义成一个union类型来操作,就只需要写一个函数
但是其中又要对结构成员“next”做操作,这样就需要再增加一个参数来选择,
觉得不爽,看大家有没有好办法
在我第一次迷失方向的时候 在那盏路灯下 你告诉我 相走田 马走日 在我第一次出门的时候 在那盏路灯下 你告诉我 当头炮 马先跳 在我第一次面对世界的时候 我告诉我 拱卒啊 过河啊 冲啊 吃啊 将啊 将将将将 将啊在我回家的那天 面对我自己 我吃我的车 我吃我的马 我吃我的炮 我吃我的车 我吃我的马 我吃我的炮 我吃我的心啊 吃啊 将啊 将将将将 将啊
huntervc
驱动牛犊
驱动牛犊
  • 注册日期2003-12-26
  • 最后登录2009-11-07
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-24 17:56
为什么需要增加一个参数来选择呢?不增加也可以啊,你不是知道联合里面的数据类型吗?
meteor
驱动大牛
驱动大牛
  • 注册日期2001-12-10
  • 最后登录2009-08-14
  • 粉丝0
  • 关注0
  • 积分280分
  • 威望62点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-30 11:18
在union中每个结构用不同的名字不就行了?
比如socket中的
struct   in_addr {
    union   {
         struct{
             unsigned  char   s_b1,
                              s_b2,
                              s_b3,
                              s_b4;
        }  S_un_b;
             struct  {
             unsigned  short  s_w1,
                              s_w2;
              }  S_un_w;
               unsigned long  S_addr;
     } S_un;
};
流星一剑 天才的人是流星,注定要燃烧自己以照亮他们的世纪。
caesun
驱动小牛
驱动小牛
  • 注册日期2001-12-10
  • 最后登录2006-12-01
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值393点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-07-02 03:13
全部用   LPVOID
sodier
驱动牛犊
驱动牛犊
  • 注册日期2005-03-11
  • 最后登录2005-08-20
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-07-03 03:37
介绍一种另外的方法
操作系统里边普遍采用的一种做法是专门为链表链接作一个struct
比如:
struct link
{
struct link* next,*prev;
}

然后在需要链接的结构里添加这个结构
struct a
{
。。。
struct link link_list;
。。。
}
link_list专门负责链接
如果当前节点为current,
需要取下一个元素时,可以先得到current-〉link_list->next
然后用得到的这个地址减去link_list本身在结构a中的位移量即可
((a*)(current->link_list->next-(unsigned long)(&((a*)0)->link_list))
这里&((a* 0))->link_list表示当结构a正好在地址0上时其成员link_list的地址

摘自LINUX内核源代码情景分析
windows里也是这样用的。
没有比较更长的路 没有比人更高的峰
游客

返回顶部