我有一堆函数,它们的开始和结束方式都相同,只有中间部分不同。
我知道我能做到:
int
foo(int bar)
{
intro();
/* stuff that differs */
outro();
}
但我想知道是否有另一种方法,使我不必在所有函数中重新输入 intro() 和 outro()。
最佳答案
一种方法是使用函数指针。 void (*function)(void)
是指向返回 void
且不带参数的函数的指针。
int foo(int bar, void (*function)(void))
{
intro();
/* call the function*/
function();
outro();
}
您通过传递具有原型(prototype)的函数的地址来调用它
void someFunctionName(void)
。
如果“不同的东西”应该接受参数或返回值,请根据口味进行调整。
关于c - 当函数只有中间部分不同时,避免重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937069/