首页 > 解决方案 > 在 C/C++ 中,我试图在没有 if-else 阶梯的 for 循环中调用不同的函数(在描述中解释)

问题描述

我定义了一些 API,如下面的原型。

void foo_network_call_1();
void foo_network_call_2();
void foo_network_call_3();
void foo_network_call_4();

void foo_parse_data_1();
void foo_parse_data_2();
void foo_parse_data_3();
void foo_parse_data_4();

我可以对每种类型的 API 进行 4 次调用来完成工作。该代码将不干净等。

我正在寻找一种在循环中调用上述 API 的方法,例如for循环。

就像是:

for (int i=1; i<5; ++i) {
   foo_network_call_##i();
   foo_parse_data_##i();
}

## 只是代表我i在通话中附加。我不知道 C/C++ 中有任何调用机制可以做到这一点。

谢谢你的帮助。

标签: c++cfunction

解决方案


使用函数指针数组似乎是显而易见的事情。

typedef void (*network_func)();
typedef void (*parse_func)();

network_func network_functions[4] = { foo_network_call_1, ... };
parse_func parse_functions[4] = { foo_parse_data_1, ... };

for (int i = 0; i < 4; ++i)
{
    (network_functions[i])();
    (parse_functions[i])();
}

推荐阅读