我是stackoerflow的新手,这是我的第一个问题。我对代码的算法不感兴趣,我只想知道为什么编译器报告我上面写的错误。错误是:*错误是
:/usr/bin/ld: /tmp/ccw8lUiZ.o: in function `main':
ex2.3.c:(.text+0x14a): undefined reference to `or_vectb'
/usr/bin/ld: ex2.3.c:(.text+0x181): undefined reference to `or_vectb'
collect2: error: ld returned 1 exit status*
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#define A {9,7,7,5,5,3}
#define l 6
void or_vectb(int len,int *B[len]);
void crea_vetpunt(int len,int V[len],int *B[len]){
int i;
for (i=0; i<len; i++){
B[i]= &(V[i]);
};
}
void printa_vettore_ptr(int len , int *B[len]){
int i=0;
printf ("il vettore B sta puntando a questi elementi : \n ");
for (i=0; i<len; i++){
printf("%d",*B[i]);
}
//funzione scambia
void scambia(int len, int *B[len],int i){
int j= i+1;
int * temp_ind;
temp_ind=B[i];
B[i]=B[j];
B[j]=temp_ind;
}
// try to order the vect
void or_vectb(int len,int *B[len]){
int i,j;
for (i=0; i<len; i++){
for(j=0; j<len; j++){
if(*(B[i])>*(B[i+1])){
scambia(len,B,i);
}
}
}
}
}
int main (void) {
int len= l;
int V[l]=A;
int* B[l];
crea_vetpunt(len, V,B);
printa_vettore_ptr(len,B);
or_vectb(len,B);
printa_vettore_ptr(len,B);
return 0;
}
*the error is :/usr/bin/ld: /tmp/ccw8lUiZ.o: in function `main':
ex2.3.c:(.text+0x14a): undefined reference to `or_vectb'
/usr/bin/ld: ex2.3.c:(.text+0x181): undefined reference to `or_vectb'
collect2: error: ld returned 1 exit status*
您对函数的定义scambia
并or_vectb
出现在函数内部printa_vettore_ptr
。诸如此类的嵌套函数定义是一种特殊用途的特殊功能,某些编译器支持将其作为C标准的扩展。您无需在该程序中使用任何这些特殊目的,也不需要嵌套这些函数定义。
移动的定义scambia
,并or_vectb
从里面printa_vettore_ptr
之前或之后printa_vettore_ptr
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句