C编译器可以找出C源程序中所有的语法错误和逻辑错误,但并不找出逻辑错误。
1. 静态错误和动态错误
1.1 静态错误: 静态错误是编译时发现的错误,包括静态语法错误和静态逻辑错误。
1.2 动态错误: 动态错误是指程序运行时发生的逻辑错误,如死循环、数组下标越界等。
2. 编译器的工作
2.1 语法错误检测: 在编译前浏览程序的源代码,查看是否有明显的语法错误。
2.2 编译器提示错误: 编译器的工作之一是检查语法错误,并提示程序员。
3. 系统错误的编码
3.1 一般错误:1-199 编号,指一般编译器产生的语法错误。
3.2 PC-Lint 内部错误:200-299 编号,不会出现在代码中。
3.3 系统致命错误:300-399 编号,由于内存限制等导致的致命错误。
3.4 提示信息:400-999 编号,根据源代码的错误情况生成提示信息。
4. 逻辑错误
4.1 编译器限制: 编译器无法确定编程者的意图,因此无法准确找出逻辑错误。
4.2 动态语义错误: 指程序中包含的逻辑错误,发生在程序运行时。