功能指针

时间:2011-01-02 11:17:03

标签: c

<小时/> 在我的A.h文件中

Node RemoveString(Node (*)(char,Node));
Node Minimum(char, Node);

<小时/> 在我的A.c文件

Node Minimum(char type, Node node) {......}
Node RemoveString(Node(*Minimum)(char, Node)) {...}

<小时/> 在我的B.h文件中

void Test_Function(Node (*)(char,Node));

<小时/> 在我的B.c文件

void Test_Function(Node(*Minimum)(char, Node)) {...}

<小时/> 在我的Main.c

Test_Function(Node(*Minimum)(char, Node));//This line has error.

<小时/> 节点在A.h中定义 B.h包括“A.h”
Main.c包括“B.h”


编译器抱怨错误:在'Node'之前的预期表达式 谁能告诉我为什么?在这种情况下我做错了什么?

3 个答案:

答案 0 :(得分:4)

调用函数时,只需使用函数名称而不是完整定义。所以这一行:

Test_Function(Node(*Minimum)(char, Node));

应该是:

Test_Function(&Minimum);

当然,您还应确保在此声明之前定义了函数Test_Function和Minimum(即包含的文件)。

答案 1 :(得分:1)

您用作Test_Function参数的表达式是一种类型,而不是函数指针。函数指针只是函数的名称:

Test_Function(Minimum);

答案 2 :(得分:0)

你标记了这个c,所以我认为你使用的是C编译器(不是C ++) - 对吧?在这种情况下,您需要在每个声明中编写struct Node,或使用typedef