我试图理解为什么 foo 函数会触发链接器错误“未定义对 foo 的引用”,只有当我将其定义放在列表的最后时,并且如果声明位于列表中的其他任何位置,则错误不存在了。如果有帮助,我将使用 DevC++ 5.3.0.4 创建一个 C 项目,并以此文件作为主文件。所有其他功能都正常工作,我想了解为什么定义的位置如此重要,因为该功能不使用其他功能?
最初确实如此,但在试图弄清楚为什么会出现此错误时,我已经消除了我认为可能的原因,因此 foo 函数体内的所有其他函数调用。
我想这可能与数组参数有关,但是这个函数有什么特别之处而不是其他函数呢?
#include <stdio.h>
#include <stdlib.h>
void removeDuplicate(int position, int vector[], int n);
int belongsToSet(int x, int v[], int vectorDimension);
int isDuplicate(int position, int vector[], int n);
void displaySet(int v[], int dimension);
int foo(int v[]);
int main(int argc, char *argv[]) {
int m = -1, n = -1, i, j;
int a[20], b[20], reunion[40], intersection[40], abDifference[20],
baDifference[20];
int reunionIndex = 0, intersectionIndex = 0, abDifferenceIndex = 0,
baDifferenceIndex = 0;
i = foo(a);
getch();
return 0;
}
int belongsToSet(int x, int v[], int vectorDimension){
int i;
for (i = 0; i < vectorDimension; i++){
if (v[i] == x){
return 1;
}
}
return 0;
}
void removeDuplicate(int position, int vector[], int n){
int i;
for (i = position; i < n - 1; i++){
vector[i] = vector[i + 1];
}
}
int isDuplicate(int position, int vector[], int n){
int i;
for (i = 0; i < n; i++){
if ((vector[i] == vector[position]) && (i != position)){
return 1;
}
}
return 0;
}
void displaySet(int v[], int dimension){
printf("\n");
if (dimension == 0){
printf("\xed");
}else{
int i;
printf("{");
for (i = 0; i < dimension; i++){
printf("%d, ", v[i]);
}
printf("\b\b}");
}
int foo(int v[]){
return 1;
}
}