【问题标题】:How do you write a function pointer that returns a function pointer without using typedefs?你如何编写一个函数指针来返回一个函数指针而不使用 typedefs?
【发布时间】:2016-08-08 17:51:40
【问题描述】:

我看到了this,但它从未指定如何声明返回函数指针的函数指针(它只是定义了如何创建返回函数指针的函数)。

虽然使用 typedefs 可能更明智,但我对在没有 typedefs 的情况下完成此操作的语法很感兴趣。

这是我得到的最接近的:

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)

适用于实际功能并在链接中进行了说明。但是,我应该如何声明引用此类定义的函数指针?

【问题讨论】:

  • “它从未指定如何声明返回函数的函数指针(它只是定义了如何创建返回函数指针的函数)”——在 C 中,函数指示符不是一等的。你不能返回一个函数。你只能返回一个函数指针。
  • 我的措辞显然具有误导性。我明白你刚才说的,但这不是我要问的。如果我不必将 getFunction 放入结构中,那么我将能够正确编写它。问题是如何定义一个函数指针,它等价于一个不在结构内部的函数。
  • 指针是结构的成员还是“独立”变量都没有关系。声明是一样的。
  • @TheParamagneticCroissant 而这一点完全从你的脑海中掠过......实际上,我的语法正确,但没有正确阅读声明

标签: c return function-pointers


【解决方案1】:

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

不使用typedef 你可以声明为

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

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

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

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

声明如下:func 是一个函数,它接受两个Type 类型的参数,并返回一个指向函数的指针,该函数接受Type 类型的参数并返回Type

现在您可以将func 分配给funcPtr

functPtr = func;

【讨论】:

  • 我想我现在明白了。我需要反转oparameter位置。
猜你喜欢
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 2022-01-07
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多