C++ typedef类型不匹配将其传递到函数
我有一个头球C++ typedef类型不匹配将其传递到函数,c++,typedef,C++,Typedef,我有一个头球 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 &
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;
}
这是为什么?这不正是“function(func f)”作为参数的类型吗?
更好的问题是如何使类型匹配
typedef double func(double)
应该是
typedef double (*func)(double);
并确保链接到包含function()
实际实现的源文件
你需要去掉
func fmain()
中的代码>声明“头中的函数”只是一个声明,而不是定义。错误是您从未定义过函数
,因此链接器不知道调用什么。这不是类型不匹配。函数是在相应的.C文件中正确定义的。@但是,您是否确实编译了该文件并将生成的obj文件链接到最终的可执行文件中?听起来你好像没那么做。
typedef double (*func)(double);