我正在编写一个简单的程序来计算函数的导数,但我总是得到错误:
collect2:错误:ld返回1退出状态
这是我的计划:
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
double derivative2(double (fun), double step, double x);
double fun(double);
int main(int argc, char* argv[]){
double h = atof(argv[1]);
double x = sqrt(2);
cout << derivative2(fun(x),h,x) << endl;
return 0;
}
double derivative2(double fun(double),double step, double x){
return ((fun(x+step)-fun(x))/step);}
double fun(double x){
return atan(x);
}
我发现了this帖子,但它在我的情况下没用。
答案 0 :(得分:1)
double derivative2(double (fun), double step, double x);
并且
double derivative2(double fun(double),double step, double x)
是不同的事情。在第一个声明fun
是double
,第二个fun
是double(*)(double)
(指向函数的指针)。
因为此函数计算某一点的导数,所以右声明是带有函数指针的声明。
修正:
double derivative2(double fun(double), double step, double x); // fun is a function pointer.
...
cout << derivative2(fun, h, x) << endl; // Pass fun as a function pointer.