0

我有以下代码调用三个不同的函数,名为func_afunc_bfunc_c它们使用相同的参数。在每次调用之前和之后,我都需要调用函数foobar重置/打印一些变量。每次我打电话给他们时,他们都在做同样的事情。

foo();
func_a(param);
bar();

foo();
func_b(param);
bar();

foo();
func_c(param);
bar();

所以,我的问题是:有什么方法可以让这部分更优雅?在我的情况下,它会上升到func_e,所以我有五个接近重复的代码。

4

1 回答 1

3

我想你可以把所有共同的东西放在一个调用函数指针的函数中。然后遍历函数指针数组,将它们传递给单个辅助函数:

void invoke_foo_func_bar (void (*func)(int), int param) {
    foo();
    func(param);
    bar();
}

/* ... */
void (*funcs[])(int) = { func_a, func_b, func_c };
for (int i = 0; i < sizeof(funcs)/sizeof(*funcs); ++i) {
    invoke_foo_func_bar(funcs[i], param);
}
于 2013-08-22T05:49:42.323 回答