C语言函数错误

时间:2013-05-10 10:43:09

标签: c++ function

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

你帮我找错了吗? 感谢

1 个答案:

答案 0 :(得分:2)

  

错误C2601:'X':本地函数定义是非法的

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

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

  

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

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

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

如果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;
}