如何在不使用typedef的情况下编写返回函数指针的函数指针?

时间:2016-04-16 20:39:17

标签: c return function-pointers

我看到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)

适用于实际功能,并在链接中说明。但是,我如何声明一个引用这种定义的函数指针?

1 个答案:

答案 0 :(得分:2)

  

如何声明一个返回指向函数指针的函数指针

不使用typedef,您可以声明为

Type (* (*funcPtr)(Type, Type) ) (Type); 

声明读作: funcPtr是一个指向函数的指针,该函数需要两个类型为Type的参数,并返回一个指向函数的指针,该函数需要类型为Type的参数并返回Type

如果你要声明一个返回指针的函数,那么

Type (* func(Type, Type) ) (Type);   

声明读作: func是一个函数,它接受类型为Type的两个参数,并返回一个指向函数的指针,该函数接受类型Type的参数并返回{{ 1}} 的。

现在,您可以将Type分配给func

funcPtr