我将简短地提出我的问题:
我有一系列名为f1,f2,f3等的函数,现在我想循环遍历它们,而不是逐个输入它们。有没有办法做到这一点?这是一个c编程实践。
答案 0 :(得分:2)
反射在C中不起作用,据我所知,所以你不能使用它们的名称动态地将字符串转换为函数调用。
但是,您可以使用函数指针来执行此操作。
#include <stdio.h>
int f1()
{
printf("f1() \n");
return 0;
}
int f2()
{
printf("f2() \n");
return 0;
}
int f3()
{
printf("f3() \n");
return 0;
}
int main(int argc, char *argv[])
{
int (*p[3])() = {
f1,
f2,
f3
};
for (int i=0; i<3; i++) {
(*p[i]) ();
}
return 0;
}
答案 1 :(得分:0)
如果您正在寻找将函数名字符串转换为地址的函数,请尝试使用dlsym()