【发布时间】: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