我试图实现一个简单的函数描述符数组,类型为fun\u desc

struct fun_desc {
  char *name;
  void (*fun)();
};

我有两个函数f1和f2都是coolFunct类型的
typedef int (*coolFunct) (unsigned int);

我的数组定义如下
struct fun_desc funArr[]={{"f1", &f1}, {"f2",&f2}};

现在我试图调用数组中的一个函数,我想我需要将它强制转换为coolFunct,因为它是未指定类型的(或者我错了)
但是下一个调用不起作用(没有编译或运行时错误,只是什么也没有发生):
((coolFunct)(funArr[0].fun))(1);

一如既往,我们非常感谢您的帮助。。。

最佳答案

使用以下语法:

(*funArr[0].fun)();

另外,不要强制转换,您的函数类型不同,将崩溃,请尝试以下操作:
typedef int (*coolFunct) (unsigned int);

struct fun_desc {
  char *name;
  coolFunct fun;
};

(*funArr[0].fun)(1);

编辑:如果确实要强制转换,则调用的语法为:
((coolFunct)funArr[0].fun)(1);

关于c - c中的函数描述符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5224832/

10-12 16:15