带有void指针实参的C语言函数数组,动态分配



我不能声明如何正确地声明一个函数向量,我可以将其作为参数传递给get_operations函数,然后我可以在之前声明的向量的组件的帮助下调用8个函数。下面是我使用的结构和函数:

void get_operations(void **operations) {
operations[0] = tire_pressure_status;
operations[1] = tire_temperature_status;
operations[2] = tire_wear_level_status;
operations[3] = tire_performance_score;
operations[4] = pmu_compute_power;
operations[5] = pmu_regenerate_energy;
operations[6] = pmu_get_energy_usage;
operations[7] = pmu_is_battery_healthy;
}
typedef int (*statfunc)(void *);
int tire_pressure_status(void *);
int tire_temperature_status(void *);
int tire_wear_level_status(void *);
int tire_performance_score(void *);
void get_operations(void **operations) {
statfunc *vect = *operations;
vect[0] = tire_pressure_status;
vect[1] = tire_temperature_status;
vect[2] = tire_wear_level_status;
vect[3] = tire_performance_score;
}
int main(void)
{
statfunc vector[4];
void *ptr_to_vector = vector;
get_operations(&ptr_to_vector);
vector[0](NULL);
vector[1](NULL);
vector[2](NULL);
vector[3](NULL);
}

int tire_pressure_status(void *)
{
return printf("%sn", __func__);
}
int tire_temperature_status(void *)
{
return printf("%sn", __func__);
}
int tire_wear_level_status(void *)
{
return printf("%sn", __func__);
}
int tire_performance_score(void *)
{
return printf("%sn", __func__);
}

https://godbolt.org/z/1nTPKd8v1

最新更新