找不到问题-[错误] ld返回1退出状态

时间:2019-05-09 03:43:07

标签: c++

我需要帮助来找到编译器给我的错误:

  

C:\ Users \ AppData \ Local \ Temp \ ccaruUld.o Test3_Problem2.cpp :(。text + 0x73):对`SUM(float,float)'的未定义引用

     

C:\ Users \ Downloads \ collect2.exe [错误] ld返回1个退出状态

代码:

    //Test 3 - Problem 2
#include<iostream>
#include<cmath>
using namespace std;

float SUM(float value,float sum);

int main()
{
    //Introduce program to user
    cout<<"This program asks for 5 numbers and averages the numbers \
together.";

    //Declare variables
    float averg,value[4],sum1=0;

    //Allow user to enter 5 values
    for(int i=0;i<=4;i++){
        cin>>value[i];
    }
    sum1=SUM(value[4],sum1);
    cout<<value[0]; 

}
    float SUM(float vales[4],float sum) {
        for(int i=0;i<=4;i++){
            sum+=vales[i];
    }
    return sum;
}

无论我修复多少代码,都找不到。 我看着类似的问题,因为这是入门级C ++课程,所以所有答案对我来说似乎都是外来语言...

3 个答案:

答案 0 :(得分:2)

我遇到了一些不同的问题,因此我重写了代码并评论了所修复的错误。希望这会有所帮助!

//Test 3 - Problem 2
#include<iostream>
#include<cmath>
using namespace std;

//THE FIRST PARAM WAS NOT DECLARED AS A VECTOR
//obs: That way you do not need to set the vector size limit or the variable name
float SUM(float[],float);

int main()
{
    //Introduce program to user
    //Forgot the " << endl;"
    cout<<"This program asks for 5 numbers and averages the numbers \ together." << endl;

    //Declare variables
    //Declared vector size less than 5 numbers
    float averg,value[5],sum1=0;

    //Allow user to enter 5 values
    for(int i=0;i<=4;i++){
        cin >> value[i];
    }
    sum1 = SUM(value,sum1);
    //You were print the vector at position 0 instead of the result of the sum
    //and forgot the " << endl;"
    cout << sum1 << endl;; 

}
    //VALES WAS NOT DECLARED AS A VECTOR
    //obs: Beware of indentation
float SUM(float vales[],float sum) {
    for(int i=0;i<=4;i++){
        sum+=vales[i];
    }
    return sum;
}

答案 1 :(得分:1)

假设您在此处发布的所有代码都是全部,那么您的问题是您尚未实现SUM()函数。

此代码:

float SUM(float value,float sum);

称为函数原型,与该函数的实现不同。

https://en.wikipedia.org/wiki/Function_prototype

  

函数原型一词特别用在C和C ++编程语言的上下文中,在这些语言中,将函数的前向声明放在头文件中可将程序拆分为翻译单元,即拆分为编译器可分别翻译为目标文件的部分,由链接器组合成可执行文件或库。

这就是为什么您的IDE可能不会警告您SUM函数不存在的原因,因为您的代码顶部有一个函数原型,该函数原型将代码中的调用与该函数相匹配。

要解决此问题,您需要实现SUM功能:

float SUM(float value,float sum)
{
    //Implementation
}

答案 2 :(得分:0)

尝试此,它应该工作:

//Test 3 - Problem 2
#include<iostream>
#include<cmath>
using namespace std;

float SUM(float vales[4],float sum) {
    for(int i=0;i<=4;i++){
        sum+=vales[i];
}
return sum;
}

int main()
{
 //Introduce program to user
 cout<<"This program asks for 5 numbers and averages the numbers \
 together.";

//Declare variables
float averg, value[4], sum1=0.0;

//Allow user to enter 5 values
for(int i=0;i<=4;i++){
    cin>>value[i];
}
sum1=SUM(value,sum1);
cout<<value[0];
}