当只有函数的中间部分不同时,避免重复代码

时间:2014-04-08 12:30:08

标签: c code-duplication

我有一堆函数,所有函数都以相同的方式开始和结束,只有中间部分不同。

我知道我能做到:

int
foo(int bar)
{
    intro();
    /* stuff that differs */
    outro();
}

但是我想知道是否还有其他方法,让我免于重新输入所有函数中的intro()和outro()。

2 个答案:

答案 0 :(得分:7)

一种方法是使用函数指针void (*function)(void)是指向返回void并且不带参数的函数的指针。

int foo(int bar, void (*function)(void))
{
    intro();
    /* call the function*/
    function();
    outro();
}

通过传递具有原型

的函数的地址来调用它

void someFunctionName(void)

如果"那些不同的东西调整味道"应该拿参数或返回一个值。

答案 1 :(得分:2)

首先,您应该阅读面向方面编程。它与您的查询相关。

其次,您应该对使用任何方法避免代码重复感到满意。你所展示的内容并没有明显的错误。