我试图实现一个简单的函数描述符数组,类型为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/