c++ - 在 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++ 中有任何调用机制可以做到这一点。
谢谢你的帮助。
解决方案
使用函数指针数组似乎是显而易见的事情。
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])();
}
推荐阅读
- javascript - 我可以在 Express POST 请求中进行 DOM 操作吗?
- python - Discord.py - AttributeError:模块'discord'没有属性'Embed'
- django - 如何使用主管和 gunicorn 或 daphne 运行应用程序 django 频道
- javascript - 在角度 6 中修改数组数据后视图未更新
- python - Keras CNN 中用于多类图像分类的验证精度常数
- python - 无法使用 selenium 和 python 获取 cookie
- java - super(variableName) 之间的区别; 和 super.variableName
- mysql - 为什么 MySQL 将浮点 6.099999904632568 截断为 6.1
- css - 查找用户会员计划 WooCommerce
- python-3.x - 在 Python 中使用 HTTP 客户端库时遇到错误