eva*_*ing 2 c code-duplication
我有一堆函数,所有函数都以相同的方式开始和结束,只有中间部分不同.
我知道我能做到:
int
foo(int bar)
{
intro();
/* stuff that differs */
outro();
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否还有另一种方法,让我免于重新输入所有函数中的intro()和outro().
一种方法是使用函数指针.void (*function)(void)是一个指向函数的指针,该函数返回void并且不带参数.
int foo(int bar, void (*function)(void))
{
intro();
/* call the function*/
function();
outro();
}
Run Code Online (Sandbox Code Playgroud)
您可以通过传递具有原型的函数的地址来调用它
void someFunctionName(void).
如果"不同的东西"应该采取参数或返回值,请调整味道.