循环函数名称

时间:2013-10-15 05:06:20

标签: c

我将简短地提出我的问题:

我有一系列名为f1,f2,f3等的函数,现在我想循环遍历它们,而不是逐个输入它们。有没有办法做到这一点?这是一个c编程实践。

2 个答案:

答案 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()

http://man7.org/linux/man-pages/man3/dlsym.3.html