我有一个标题
typedef double func(double)
和名为
的标题中的函数声明double function(func f);
这被定义为在相应的.C文件中执行某些操作。所以,要访问它,我有一个包含
的文件main.C.#include"necessaryheader.h"
double f(double x){
return 1.0;
}
int main(){
func f;
double x = function(f);
std::cout << x << std::endl;
}
但是当我尝试编译它时会抛出错误
undefined reference to `function(double (*)(double))'
为什么这不是'function(func f)'作为参数的类型? 一个更好的问题是如何使类型匹配?
答案 0 :(得分:1)
typedef double func(double)
应该是
typedef double (*func)(double);
确保链接到包含function()
的实际实现的源文件。
您需要摆脱func f;
中的main()
声明。