+ -
当前位置:首页 → 问答吧 → 怎么减少这种情况下的代码量?菜鸟问题,解决了立刻给分

怎么减少这种情况下的代码量?菜鸟问题,解决了立刻给分

时间:2011-12-21

来源:互联网

有多个函数
C/C++ code

void f()
{
    //大量重复代码
    spec_f()//特殊函数
}
void g()
{
    //大量重复代码,和f中的一样
    spec_g()//特殊函数
}
void k();//等等,还有很多。。。



spec_x()的函数原型都是不相同的。现在想减少代码量,该怎么做啊???

作者: beef9999   发布时间: 2011-12-21

不知道可不可以用宏定义...
要不就用C++的类继承吧..

作者: shenxinji   发布时间: 2011-12-21

void f()
{
  //大量重复代码
  spec_f()//特殊函数
}
void g()
{
  //大量重复代码,和f中的一样
  spec_g()//特殊函数
}
void k();//等等,还有很多。。。



=================
void rep()
{
//大量重复代码,和f中的一样

}

void f()
{
  rep();
  spec_f()//特殊函数
}
void g()
{
  rep();
  spec_g()//特殊函数
}



作者: mingliang1212   发布时间: 2011-12-21

引用 2 楼 mingliang1212 的回复:
...


这个还是不够简单啊,f,g,。。。有多少个函数我就要写多少遍,有没有其他方法

作者: beef9999   发布时间: 2011-12-21

C/C++ code
形参定义一个函数指针,实参传入预先定义好的函数指针数组中的特定的一个就得到特定的组合函数

作者: zm19870528   发布时间: 2011-12-21

引用 3 楼 beef9999 的回复:这个还是不够简单啊,f,g,。。。有多少个函数我就要写多少遍,有没有其他方法


如果各函数原型不同,而且你又不能重新设计原型,那么这就是不可再简化的了,哪怕动用汇编,也只会搞得更麻烦

可以重新设计的话,考虑改成统一的原型用函数指针

作者: yisikaipu   发布时间: 2011-12-21

为什么不把重复代码写成一个函数勒,真是好奇啊!

作者: zhozhoyu   发布时间: 2011-12-21

可以用模板一类的东西吧 重复的东西

作者: linghuazaii   发布时间: 2011-12-21

用运行时多态或者编译期多态。重新设置。将变化的写成函数指针或者对象。从C++的角度看,用泛型最合适,但是难度。。。

作者: mingliang1212   发布时间: 2011-12-21

如果原型虽不同,但有一定规律,比如都是传地址或者内置类型而且返回地址或内置类型,那么也可不改原型
vc的话,参考
http://topic.csdn.net/u/20111209/16/e7847508-b1cc-440e-a89c-3a566d1abdc8.html
#35楼

作者: yisikaipu   发布时间: 2011-12-21

楼上打错了,重新设计

作者: mingliang1212   发布时间: 2011-12-21

void rep()
{
//大量重复代码,和f中的一样
}

#define CALL_X(x) rep();spec_##x();

作者: ch_fb   发布时间: 2011-12-21