TurboC错误详解:严重错误、一般错误与警告

需积分: 9 0 下载量 195 浏览量 更新于2024-09-11 收藏 71KB DOC 举报
"C语言错误表" C语言编程过程中,可能会遇到不同类型的错误,这些错误主要分为三类:严重错误(fatal error)、一般错误(error)和警告(warning)。理解和解决这些错误是编写有效且可执行的C程序的关键。 1. 严重错误(fatal error): - Bad call of inline function:内部函数的不合法调用,可能是由于在使用内联函数(宏定义的函数)时,调用方式不正确。内联函数通常以两个下划线(__)开始和结束,确保按照正确的语法来调用它们。 - Irreducible expression tree:不可约表达式树,这意味着编译器无法为某个复杂的表达式生成代码。应避免使用可能导致这种问题的表达式。 - Register allocation failure:存储器分配失败,表示源代码中的某个表达式过于复杂,导致代码生成阶段无法处理。这时,需要简化表达式或者避免使用。 2. 一般错误(error): - #operator not followed by macro argument name:在宏定义中,“#”运算符后面没有跟上宏变元的名字。确保在宏定义中正确使用“#”来处理字符串化操作。 - 'xxxxxxxx' not an argument:“xxxxxxxx”不是函数参数,这个标识符被误用为函数参数,但在函数定义的参数列表中并未出现,检查函数签名和调用是否匹配。 - Ambiguous symbol 'xxxxxxxx':歧义性符号,当有多个结构体使用相同的域名称,但各自的位移和类型不同,这会导致引用时的混淆。需要避免在不同结构体中使用相同名称的域,或在访问时明确指定结构体类型。 处理这些错误的方法通常包括仔细检查代码,确保语法正确,遵循C语言的标准,避免过度复杂的表达式,以及在宏定义和函数调用中正确使用标识符。对于结构体中的歧义,可以通过使用结构体指针或结构体成员访问运算符(. 或 ->)来明确指定要访问哪个结构体的成员。 此外,编译器还会报告出错的源文件名和行号,帮助开发者定位问题所在。需要注意的是,由于C语言允许在语句末尾放置分号,所以有时错误可能会出现在显示行号的前一行或前几行。因此,查找错误时不仅要看提示的行,还要检查附近的代码。 最后,警告(warning)虽然不会阻止程序编译,但它们指出了一些可能存在问题的地方,如使用了与机器相关的特性,或是其他可疑的编程实践。尽管警告不影响程序运行,但为了编写更健壮和可维护的代码,最好消除所有警告。 理解并解决C语言的编译错误是提高编程技能的重要步骤,这要求程序员具备良好的错误排查能力,熟悉C语言的语法规则,并能根据编译器的提示进行代码修正。
2012-11-09 上传