我使用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是未声明的标识符
你帮我找错了吗? 感谢答案 0 :(得分: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;
}