2013-10-14 185 views
-3

我知道有很多类似的问题,但我太新了。所以我的问题是我必须做一个makefile并编译我的项目,但在某些时候它会返回错误。错误:功能参数太少

Main.cpp的

#include <iostream> 
#include <stdlib.h> 
#include "SquareRootCalculation.h" 
using namespace std; 
int main(int argc, char* argv[]) 
{ 
    int number = atoi(argv[0]); 
    int th = atoi(argv[1]); 
    float result = SquareRoot(number, th); 
return 0; 
} 

InitialGuess.cpp

#include <iostream> 
#include <math.h> 
using namespace std; 
int InitialGuess(int number) 
{ 
    float numberLength = 0; 
for(; number != 0; number /= 10, numberLength++); 
float n = nearbyint(sqrt(numberLength)); 
float y = numberLength * pow(10, n); 
return 0; 
} 

SqrtCalc.cpp

#include <iostream> 
#include "InitialGuess.h" 
#include <math.h> 
using namespace std; 
int SquareRoot(int number, int th, float y) 
{ 
int initialGuess = InitialGuess(y); 
float x = initialGuess; 
for (int k=1; k< th; ++k) 
    { 
     x = (x + (number/x))/2; 
    } 
cout<<x;  
return 0; 
} 

还我InitialGuess.h

int InitialGuess(int number, float y); 

和sqrtcalc.h

int SquareRoot(int number, int th); 

和一个生成文件

all: 
g++ Main.cpp InitialGuess.cpp SquareRootCalculation.cpp -o FR  

它在这一点上返回一个错误

InitialGuess.h 1 In function 'int SquareRoot (int,int,float)' 
InitialGuess.h "too few arguments 'int InitialGuess(int, float)' 

SqrtCalc 7错误

回答

1

误差是自我解释:

在你定义int InitialGuess(int number, float y); .h文件中 - 以2个参数,但在.cpp文件int InitialGuess(int number) - 一个

同样的问题SquareRoot功能

2

这是你的函数的声明:

int SquareRoot(int number, int th, float y) 

,这是你怎么把它称为:

SquareRoot(number, th); 

你错过ŧ他第三个论点。

此外,InitialGuess需要两个参数,但你有它。