C语言函数错误

C language Function errors

本文关键字:错误 函数 语言      更新时间:2023-10-16

我使用C语言,我需要编写一个具有不同功能的程序。我有一些问题,但没有找到解决方法。

有两种函数。这一个

int X(int i, int k){
        int p, n;
    return p + (i-1)*(n-1) + (k-1);
}

在这个函数中,我有以下错误:错误C2601: 'X':局部函数定义是非法的

另一个是

void Mode(){
matrix_entry temp;
temp=M[i];
M[i]=M[small_i];
M[small_i]=temp;

问题是matrix_entry, temp和M是未声明的标识符

你能帮我找出我的错误吗?由于

错误C2601: 'X':局部函数定义是非法的

这听起来像你在另一个函数中定义一个函数;c++不允许这样做。将X的定义移出它当前所在的函数

另一种可能性是,在X之前有另一个函数,而您错过了该函数末尾的}

问题是matrix_entry, temp和M是未声明的标识符,但在我的主要我有这个:

首先,类型需要在使用之前声明。听起来这个函数要么出现在matrix_entry的定义之前,要么出现在不同的源文件中。

要么将matrix_entry的定义移动到任何需要使用它的地方,要么将其放在头文件中,并从每个需要它的源文件中包含它。这将修复matrix_entrytemp的前两个"未声明的标识符"错误。

如果Mmain中,那么它在其他函数中不可用。您可以将它传递给需要它的函数:

void Mode(matrix_entry * M){
    matrix_entry temp;
    temp=M[i];
    M[i]=M[small_i];
    M[small_i]=temp;
}
int main() {
    matrix_entry *M = new matrix_entry  [10];
    //...
    Mode(M);
    //...
    // Don't forget to delete anything you new
    // (Better still don't new it in the first place, 
    // or use smart pointers if you must)
    delete [] M;
}