-2

我使用 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 是未声明的标识符

你能帮我找出我的错误吗?谢谢

4

1 回答 1

2

错误 C2601:“X”:局部函数定义非法

听起来您正在另一个函数中定义一个函数;C++ 不允许你这样做。将定义X移到它当前所在的函数之外。

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

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

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

matrix_entry在需要使用它之前将定义移动到某个点,或者将其放在标题中并从每个需要它的源文件中包含它。matrix_entry这将修复和的前两个“未声明的标识符”错误temp

如果M在 中main,则在其他功能中不可用。您可以将其传递给需要它的函数:

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;
}
于 2013-05-10T10:59:50.170 回答