1、【[Error] 'm' redeclared as different kind of symbol】
C语言中出现以下报错:
【[Error] ‘m’ redeclared as different kind of symbol】
改正方法:
对一个变量,只能声明一次,多次声名,就算声明类型相同,也是错误的。
而函数中,可以直接在 “函数原型” 中声明。
例如:写一个求素数函数
int prime(int n){ //第一次声明在函数定义时!
第二次声明在函数体内,重复!!
if(i==2)
return 1; 是素数返回1,不是素数返回0
for(i=2;i<=sqrt(n);i++){
if(n%i==0)
return 0;
}
return 1;
}
2、【[Error] error: expected ';', ',' or ')' before '&' token】
如上示,少; , ) 补全即可
3、[Error] lvalue required as left operand of assignment
lvalued 的意思为 左值
原因:计算值为 == 或 !=而变量赋值为 =
赋值语句的左边应该是变量,不能是表达式。而实际上,这里是一个比较表达式,所以要把赋值号(=)改用关系运算符(==)
4、[error] ‘abs’ was not declared in this scope
原因:没有引入头文件或者头文件引入错误
正确的头文件为#include <stdlib.h> 而不是#include <math.h>
5、[error]Variable-sized object may not be initialized
原因:使用变量来定义数组长度,这个数组可以定义,却不能同时进行初始化赋值,例如a[n+1] 错误。需要在之后赋值。
如下例错误标注:
#include<stdio.h>
int main(void)
{
int m,n;
printf("输入矩阵的行数和列数\n");
scanf("%d,%d",&m,&n);
int array[m][n] = {0}; //此处有错误
printf("输入%d个数字",m*n);
for (int i=0;i<m;++i)
{
for (int j=0;j<n;++j)
scanf ("%d",array[i][j]);
}
for (int i=0;i<m;++i)
{
for (int j=0;j<n;++j)
printf("\t%-4d",array[i][j]);
if (i%n==0)
printf("\n");
}
return 0;
}
6、[Error]was not declared in this scope
其含义为标识符在其出现的地方是未被定义的。
int main()
{
printf("%d",i);//这个i是未定义的。
}
这时就会显示一个’i’ was not declared in this scope或者类似的错误信息出来。
对于变量和函数,如果未定义都会出现这个错误,该错误出现时,需要根据出现该错误的行号及名称,查找对应名称变量或函数的作用,一般有如下几种可能:
1、忘记定义。写代码的时候疏忽了,导致一些变量直接使用但没有定义。只要对应定义相应的函数或变量即可。
2 、拼写错误。写代码的时候,敲错了字符。比如sum敲成了Sum, average敲成averge等。对应修改即可。
3 、作用域不正确。在超出变量和函数的作用域部分使用了该变量或函数。需要通过定义位置,或增加声明的手段,加大变量的作用域使其包含引用位置。
7、[Error]expected declaration or statement at end of input
可能错误:
1. 某一个函数或者变量没有在使用之前声明。
2. 某个地方少了个括号/分号。(并不一定是编译器指出错误的地方,这种情况,编译器一般会在最后一行代码报错,但错误很可能不在最后一行,要靠自己去找出来)
3、仍然是最后一个函数的最后一行报错。 但是是另外一个函数内部多了个花括号。(此为本次错误)
注意花括号的配对情况!