我有以下代码调用三个不同的函数,分别名为 func_a
、func_b
和 func_c
,它们使用相同的参数。在每次调用之前和之后,我需要调用函数 foo
和 bar
以重置/打印一些变量。每次我调用他们时,他们都在做同样的事情。
foo();
func_a(param);
bar();
foo();
func_b(param);
bar();
foo();
func_c(param);
bar();
那么,我的问题是:有没有办法让这部分更优雅?在我的例子中,它上升到 func_e
,所以我有五次几乎重复此代码。
最佳答案
我想您可以将所有共同点放入调用函数指针的单个函数中。然后遍历函数指针数组,将它们传递给单个辅助函数:
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);
}
关于在 C 中调用相同顺序的函数,每次调用一个不同的函数。如何更优雅地实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18372389/