<小时/> 在我的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”
编译器抱怨错误:在'Node'之前的预期表达式
谁能告诉我为什么?在这种情况下我做错了什么?
答案 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
。