C++链接器错误未定义参考`须磨(INT,INT) 'LD返回1退出状态
这是我的代码和我有问题[链接器错误]未定义参考`须磨(INT,INT)'C++链接器错误未定义参考`须磨(INT,INT) 'LD返回1退出状态
#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无效的转换*‘来诠释’”我不知道是什么问题,结果应该是: enter image description here
错误的简要说明: -
- 链接错误被抛出,因为声明的函数没有在体内发现链接。这里的链接器试图将声明链接到该函数的地址,并且因为未找到而失败。
- 通过更改函数声明,您有一个新的错误 ,因为从
Suma()
内的int到数组的类型转换失败。要么你接受int x并尝试索引x,这是不正确的。
详细信息 -
上面的代码下面的错误,
宣言= int Suma(int, int)
。
定义= int Suma(int n, int x[])
。
代码在须磨功能=>if(n==1) return x[1]; return x[n-1]+Suma(n-1,x);
来电在主()=>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;
这应该有效。
你原型的功能像这样:
int Suma(int,int);
,但其实现是这样的:
int Suma(int n, int x[])
int
和int[]
是不一样的。然后在代码中执行此操作:
Suma(n,x[1])
它匹配第一个声明。选择一个原型然后实施它。
怎么样?我不明白如何,我是新的 –
@HéctorAlonso这应该包括你正在学习的任何文本。如果您没有文字或文字未涵盖此材料,以下列出的文字通常已被认定为良好:https://*.com/questions/388242/the-definitive-c-book-guide和 - 列表。尝试学习任何语言没有一个很好的参考是一个很好的方式来浪费你的时间。 – user4581301
在发布之前,您甚至没有读过代码? “Suma()”采用哪种类型?你传递了什么类型?你说了哪些类型? – John3136
该代码以及错误是链接器错误,我不知道为什么,但我认为问题是在“cout