c ++错误collect2:错误:ld返回1退出状态

时间:2017-10-12 12:36:17

标签: c++ compilation

我正在编写一个简单的程序来计算函数的导数,但我总是得到错误:

  

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帖子,但它在我的情况下没用。

1 个答案:

答案 0 :(得分:1)

double derivative2(double (fun), double step, double x);

并且

double derivative2(double fun(double),double step, double x)

是不同的事情。在第一个声明fundouble,第二个fundouble(*)(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.