我有一堆函数,所有函数都以相同的方式开始和结束,只有中间部分不同。
我知道我能做到:
int
foo(int bar)
{
intro();
/* stuff that differs */
outro();
}
但是我想知道是否还有其他方法,让我免于重新输入所有函数中的intro()和outro()。
答案 0 :(得分:7)
一种方法是使用函数指针。 void (*function)(void)
是指向返回void
并且不带参数的函数的指针。
int foo(int bar, void (*function)(void))
{
intro();
/* call the function*/
function();
outro();
}
通过传递具有原型
的函数的地址来调用它 void someFunctionName(void)
。
如果"那些不同的东西调整味道"应该拿参数或返回一个值。
答案 1 :(得分:2)
首先,您应该阅读面向方面编程。它与您的查询相关。
其次,您应该对使用任何方法避免代码重复感到满意。你所展示的内容并没有明显的错误。