功能定义,但仍然给出“找不到功能”错误

时间:2015-06-26 20:25:20

标签: c++

每次我运行我的代码时,这是一个简单的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++;
    } 
}

3 个答案:

答案 0 :(得分:0)

在函数//if you want to pipe some data to the remote process process.stdin .pipe(exec('echo try typing something; cat -', 'ubuntu@my-remote.com')) .pipe(process.stdout)

之前声明函数Merge
mergeSort

考虑到您忘记在函数体周围指定大括号。

也替换此声明

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

int mid=(high-low)/2;

答案 1 :(得分:0)

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

有关其他信息,请参阅此其他问题:Function declaration order matters in c language or am I doing something wrong?

答案 2 :(得分:0)

Merge之前编写mergesort函数或在Merge之前添加mergesort的函数声明。

在c ++中调用该函数之前需要函数声明,以便编译器可以理解所需的参数(按顺序)和返回类型是什么。

Merge的简单函数声明是:

void Merge(int,int,int);

将其声明为mergesort函数。

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