0

我会让我的问题简短而简单:

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

4

2 回答 2

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;
}
于 2013-10-15T05:17:51.467 回答
0

如果您正在寻找将函数名称字符串转换为地址的函数,请尝试 dlsym()

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

于 2013-10-15T05:58:50.930 回答