我看到this,但它从未指定如何声明一个返回指向函数指针的函数指针(它只是定义了如何创建一个返回函数指针的函数)。
虽然使用typedef可能更明智,但我对没有typedef的语法感兴趣。
这是我最接近的:
struct function_hash_table {
unsigned int(*(*getFunction)(Type, Type, Type))( char *name );
}
(实际上什么类型与此问题无关)。
但是,当我试着这样称呼它时:
hash_table.getFunction( "Test" );
我因参数太少和参数类型错误而出错。
澄清:
unsigned int(*hash_get_function(Type, Type, Type))(char *name)
适用于实际功能,并在链接中说明。但是,我如何声明一个引用这种定义的函数指针?
答案 0 :(得分:2)
如何声明一个返回指向函数指针的函数指针
不使用typedef
,您可以声明为
Type (* (*funcPtr)(Type, Type) ) (Type);
声明读作: funcPtr
是一个指向函数的指针,该函数需要两个类型为Type
的参数,并返回一个指向函数的指针,该函数需要类型为Type
的参数并返回Type
。
如果你要声明一个返回指针的函数,那么
Type (* func(Type, Type) ) (Type);
声明读作: func
是一个函数,它接受类型为Type
的两个参数,并返回一个指向函数的指针,该函数接受类型Type
的参数并返回{{ 1}} 的。
现在,您可以将Type
分配给func
funcPtr