作者在 2007-11-06 22:43:00 发布以下内容
这个错误主要是因为头文件包含的时侯,编译器把它们嵌入到一起进行编译.
这就有可以出现,本来是上一头文件的错误,反正报错的位置是一下头文件.
以下例子说明:
/*头文件header.h中的内容*/
typedef struct
{
int i;
int j;
}DataType
/*头文件header1.h中的内容*/
typedef struct
{
int k;
int l;
}StructType;
/*源文件的内容*;
#include"header.h"
#include"header1.h"
int main(void)
{
return 0;
}
然后,编译的时侯编译器报的错是:
Error E:\TURBOC2\HEADER1.H 1: Declaration syntax error
接我们根据错误的提示去头文件header1.h中查找,发现没有什么错误.
那到底是什么错误?
我们再去头文件header.h中看一看就知道了,忘了写上一个分号.
修改后,再去编译就没有报错了.
经典错误二:多重大于与小于的连用.
很多初学者常见的一种错误就是把"a>b && a<c"写成"b<a<c".
这种错误是不明显的,因为编译器不会报错,它认为"b<a<c"是合法的.
但它们有什么不同呢?
当a==1 b==2 c==3时
"a>b && a<c"由于">","<"的运算符优先级高于"&&",再因">"与"<"的优先级相同,
因此,先执行a>b结果为0,再执行"0 && a<c"由于"&&"中有一个为0,就不再执行另外一个式子的运算.
最后,结果为假.
"b<a<c"由"<"运算符的结合顺序是从左到右可知,先执行"b<a"运算结果为0,再执行"0<c"结果为真.