Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ typedef类型不匹配将其传递到函数_C++_Typedef - Fatal编程技术网

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);