函数已定义,但仍给出"function not found"错误

Function defined, but still giving "function not found" error

本文关键字:function not found 错误 定义 函数      更新时间:2023-10-16

每次我运行c++中的简单合并排序代码时,都会抛出一个错误,即找不到merge func。在这个问题上谁能帮忙吗。实现是这样的:

int A[9];
void mergeSort(int low,int high) {
     if (low==high)
          return ;
     int mid=(high-low)/2;
     mergeSort(low, mid);
     mergeSort(mid+1,high);
     Merge(low,mid,high); 
}
void Merge(int l,int m ,int h) {
    int i=l;int k= l;int j=mid+1;
    int b[9];
    while (l<=m &&j<=high) {
         if (a[i]<=a[j])
              b[k]=a[i];
              k++;
         b[k]=a[j];
         j++;
         i++;
    } 
}

在函数mergeSort 之前声明函数Merge

void Merge(int l,int m ,int h);

请注意,您忘记在函数体周围指定大括号。

也可替换此语句

int mid=(high-low)/2;

对于

int mid = ( high + low ) / 2;

您需要在mergeSort之前定义Merge,或者预先提供函数定义。每个函数只知道之前定义或提到的那些函数

请参阅其他问题以获取更多信息:函数声明顺序在c语言中很重要,或者我做错了什么?

mergesort之前写入Merge函数,或者在mergesort之前添加Merge的函数声明。

在c++中调用该函数之前,需要一个函数声明,这样编译器就可以了解所需的参数(按顺序)和返回类型。

Merge的一个简单函数声明是:

void Merge(int,int,int);

mergesort函数上方声明它。

在调用函数之前,编译器只需要知道返回值类型、所需的参数以及顺序。