C ++链接器错误未定义引用`Suma(int,int)'ld返回1退出状态

时间:2017-10-11 22:27:37

标签: c++ arrays linker

这是我的代码,我有问题[链接器错误]未定义引用`Suma(int,int)'

#include<iostream>
#include<conio.h>
using namespace std;
int Suma(int,int);
int main()
{
    int n,x[1],i;
    cout<<"Numero de elementos del arreglo?:  ";
    cin>>n;
    for(i==0;i<n;i++)
    {
         cout<<"elemento "<<i+1<<":  ";
         cin>>x[i];
    }
    cout<<"La suma de los elementos es:  "<<Suma(n,x[1])<<endl;
    cout<<"<<El programa ah finalizado: codigo de salida: 0>>\n"; 
    cout<<"<<Presione enter para cerrar la ventana...>>";
    getch();
}
int Suma(int n, int x[])
{
     if(n==1) return x[1];
     return x[n-1]+Suma(n-1,x);
}

如果我为Suma(n,x[1])更改此部分Suma(n,x),则新错误是“从int *'到int'的无效转换”我不知道问题是什么,结果应该是: enter image description here

2 个答案:

答案 0 :(得分:1)

错误的简要说明: -

  • 抛出链接器错误,因为在要链接的主体中找不到声明的函数。这里的链接器试图将声明链接到函数的地址,并因未找到而失败。
  • 通过更改函数声明,您会遇到新错误 因为从{int}到Suma()内的数组的类型转换失败了。您接受int x并尝试索引x不正确。

明细 -

以上代码有以下错误,

声明= int Suma(int, int)

定义= int Suma(int n, int x[])

Suma函数中的代码=&gt; if(n==1) return x[1]; return x[n-1]+Suma(n-1,x);

来自main()=&gt;的来电者cout<<"La suma de los elementos es: "<<Suma(n,x[1])<<endl;

看看以上几行。声明Suma函数,因为它接受两个整数。然而,在定义它接受一个数组。在函数定义之前调用Suma函数。所以现在它的upto编译器抛出错误。有些人可能会抱怨声明中存在不匹配,有些人可能会抛出一个错误,指出未声明/找不到的函数。

调用者的另一个问题是,调用者传递x [1]要么传递整数而不是数组。

从上面的所有内容看起来你想传递一个数组 - 所以

  • 声明应更改为数组int Suma(int n, int x[])。所以现在编译器会匹配,因此链接器也应该找到声明的函数体,因此没有错误。
  • 更改主要代码只是为了致电Suma(n, x)cout<<"La suma de los elementos es: "<<Suma(n,x)<<endl;

这应该有用。

答案 1 :(得分:0)

你的功能原型如下:

int Suma(int,int);

但是这样实现:

int Suma(int n, int x[])

intint[]不一样。然后在代码中执行此操作:

Suma(n,x[1])

匹配第一个声明。选择一个原型然后实现它。