LCC-win32与C编程简介(6)
1.7 错误与警告(errors and warnings)
在我们第一次编写一个程序时往往它是不能工作的,例如,如果我们在main函数里忘记用一个花括号`}'将它括起来时, 会发生什么?我们将前面的程序去掉一个花括号,并试运行它:
h:\lcc\examples>lcc args.c
Error args.c: 15 syntax error; found `end of input' expecting `}'
1 errors, 0 warnings
Well,这至少是一个明显的错误信息.如果忘记在第三行count的声明的末尾加上分号`;'则会复杂得多:
D:\lcc\examples>lcc args.c
Error args.c: 6 syntax error; found `for' expecting `;'
Error args.c: 6 skipping `for'
Error args.c: 6 syntax error; found `;' expecting `)'
Warning args.c: 6 Statement has no effect
Error args.c: 6 syntax error; found `)' expecting `;'
Error args.c: 6 illegal statement termination
Error args.c: 6 skipping `)'
6 errors, 1 warnings
D:\lcc\examples>
在这里可以看到一连串由第一个错误引起的错误.编译程序试着跳过错误去把程序排列起来,可是因为不能理解“for”的结构而产生了更多的错误.错误修正是一个十分困难的义务,且Lcc-win32对此并不在行.因此最好是查看第一个错误,通常因为第一个错误的修正剩下的错误信息将自动消失.[37]
当我们忘记包含相应的头文件时可以出现另一种错误.如果我们忘记在程序里写下#include <stdio.h>时,将看到如下信息:
D:\lcc\examples>lcc args.c
Warning args.c: 7 missing prototype for printf
0 errors, 1 warnings
这是一个警告.函数printf将被假定返回一个整数,只是在这个例子里是个十分好的假定.我们可以连接程序,且程序也正常运行.当然这不是一个好的习惯, 无论如何,当未知的函数没有对所有的参数进行核对; 没有发觉一个错误的参数被传递将引起另一个更棘手的错误:一个运行错误.
通常,最好在碰到错误时立即尽可能的修正.因为越迟发现错误,错误将越困难被找到.故因该养成使用相应的头文件检查所使用函数调用的习惯.
编译程序给出两种错误,根据错误的严重程度分类:警告,当错误不严重,并不至于中止编译程序的任务时给出警告.错误,当编译程序不能产生一个可执行文件时将给调用环境返回一个错误代码.
我们应当视警告为错误,并修正它们.
编译程序使用一个两个等级的“warning level”变量.在默认的情况下,很多警告为避免中断输出而不给于显示.如果你使用选项 -A提高警告的等级它们将被显示出来.这个编译程序选项将使编译程序发出所有的警告.可以在命令行里调用lcc –A <文件名>,或选择在 IDE的编译程序设置标签里相应的按钮来实现.
当然错误可以出现在编译后面的过程.连接程序可以发现你在程序使用了一个没有给出任何定义的过程,并以这个错误停止连接.或它可以发现你给出两个不同的定义,因相同的标识符而发生矛盾.这些也都会引起一个连接时的错误.
但更多的错误是在运行时发生的,即:在程序运行时.大多数的这些错误是难以发现的(它们可以通过编译程序和连接过程而没有任何警告)且将引起软件的运行故障.
当一个程序员涉及到错误时C语言不是很“慈悲的”.大多数程序将因为错误而立即终止,或返回一个乱七八糟的结果.这时你需要一个特殊的工具,一个调试程序,去发现错误.Lcc-win32为你提供了这个工具,你可以在IDE里按F5来调试你的程序.
小结:
语法错误(没有花括号或分号)是在所有错误里最容易修正的.
编译程序有两种诊断信息:警告与错误.
你可以使用选项-A来提高编译程序的错误报告.
当一个标识符被定义了两次或没有定义连接程序可以报告这种错误.
大多数的错误是在程序运行时发生的,引起程序终止或得到一个错误的结果.
[37] 如果你不是使用更新版本的Lcc-win32也许将看到不同的错误信息.当我写这个教程时我正在改良对错误的处理.
==========================
Vitamin C[抗坏血酸]那天把这分译文寄给我,我赶忙看了,我对lcc-win32 并不熟悉,一直都没用过,
但经常听人家提起。听说这个软件对在程序不是很好看,但很使用,而且免费 我一直用着盗版的vc,实在汗颜。我用了一下这个软件,感觉非常的好,唯一有一点不支持c++,另我有点费解。
不过,在用c语言编程工具中,我看我可能永远都会用他了。
Vitamin C[抗坏血酸]翻译的这本书,翻译的很详尽,很容易理解。这本书不仅对
传统c语言做了介绍,更重要的是介绍了用c编写windows的程序,很多程序员一直都用
MFC编写windows的程序,往往是对windows的编程就云里雾里了,理解就不那么透彻
,只知道只要那样做就可以出一个程序了,不能从根本上了解。看看这本书,绝对让
你有所收获。
--张Q
===========================
作者:Vitamin C 更新日期:2004-12-23
来源:c-sea.net
浏览次数:
相关文章
- LCC使用介绍
- LCC-win32与C编程简介(1)
- LCC-win32与C编程简介(2)
- LCC-win32与C编程简介(3)
- LCC-win32与C编程简介(4)
- LCC-win32与C编程简介(5)
相关评论 发表评论
inforpic [2006-08-26]
谢谢。找了好久。
leexuany [2006-09-14]
哈哈,昨天都绝望的要自己翻译了,没想到……
总之,先谢谢了。