网站大量收购独家精品文档,联系QQ:2885784924

g常见错误解析.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
g常见错误解析.doc

GCC常见错误解析 一、 错误类型 第一类:C语法错误 错误信息:文件source.c中第n行有语法错谋(syntex errror)。 这种类型的错误,一般都是C语言的语法错误,应该仔细检查源代码文件中 第n行及该行之前的程序,有吋也需要对该文件所包含的头文件进行检查。 有些情况下,一个很简单的语法错误,gcc会给出一大堆错误,此时要保持清 醒的头脑,不耍被其吓倒,必耍的时候再参考一下C语言的基本教材。 第二类:头文件错误 错误信息:找不到头文件 head.h(Can not find include file head.h)。 这类错误是源代码文件屮的包含头文件有问题,可能的原因有头文件名错误、 指定的头文件所在目录名错误等,也可能是错误地使用了双引号和尖括号。 第三类:档案库错误 错识信息:连接程序找不到所需的函数库,例如:Id: -lm: No such file or directory. 这类错误是与目标文件相连接的函数库冇错误,可能的原因是函数库名错误、 指定的函数库所在目录名称错误等,检杳的方法是使用find命令在可能的FI录中寻 找相应的函数庠名,确定档案庠及目求的名称并修改程序中及编译选项中的名称。 第四类:未定义符号 错误信息:有未定义的符号(Undefined symbol)。 这类错误是在连接过程中出现的,可能食两种原因:一是使用者0己定义的函 数或者全局变量所在源代码文件,没食被编译、连接,或者干脆还没食定义,这需 耍使用者根据实际情况修改源程序,给出全局变暈或者函数的定义体;二是未定义 的符号是一个标准的库函数,在源程序中使用了该库函数,而连接过程中还没有给 定相应的函数库的名称,或者是该档案库的目录名称冇问题,这时需要使用档案库 维护命令ar检杳我们需要的库函数到底位于哪一个函数库中,确定之后,修改gcc 连接选项屮的-1和-L项。 排除编译、连接过程屮的错误,应该说这只是程序设计屮最简单、最基本的一 个步骤,可以说只是开了个头。这个过程中的错误,只是我们在使用C语言描述 一个算法屮所产生的错误,是比较容易排除的。我们写一个程序,到编译、连接通 过为止,应该说刚刚开始,程序在运行过程屮所出现的问题,是算法设计有问题, 说得更玄点是对W题的认识和理解不够,还需要更加深入地测试、调试和修改。一 个程序,稍为复杂的程序,往往耍经过多次的编译、连接和测试、修改。 二、 常见错误信息解析与处理 2 1、预处理吋的错误信息 No such file or directory 中文含义:没食和应文件或目录 错误原因:编译器的搜索路径上找不到所需耍的文件。该文件可能已在命令行 中指定,或在#include语句中说明。 处理方法:查看文件名是否正确,或文件所存放的目录是否已添加到系统目录 或链接目录屮。以下是样例: #include stdoi.h /*错误:文件名不正确*/ int main (void){ printf (Hello World!/nn); return 0; } 上面的程序试图引入一个不存在的文件‘stdoi.h’,这就会引发如下错误: ‘stdoi.h: No such file or directory’。而IE确的文件名皮该是‘stdio.h’。 macro or #include’ recursion too deep 屮文含义:宏或’#include|递归太深 错误原因:iu^J #include嵌套太深。当预处理器遇到太多嵌套的#include指 令时,会导致此错误。通常该错误由两个或多个文件进行和互引用时,会引发无限 递归。如: /* foo.h */ #include bar.h ? ? ? /* bar.h */ #include foo.h 解决方法是确保各文件没食互和引用。 invalid preprocessing directive #... 中文含义:非法的预处理命令#... 错误原因:该错误指明预处理器遇到了不可识别的#命令。如: #if FOO int x = 1; #elseifBAR /* 应写成 #elif int x = 2; #else int x = 3; #endif 预处理器语法在#if块中需耍#elif而不是else if’条件,也不是 #elseifo warning: This file includes at least one deprecated or 3 antiquated header. 屮文含义:警告:文件屮至少引用了一个已废弃的或过时的头文件 错误原因:该错误通常是在C++程序屮引用了旧式的头文件库, 如’iostream.h’,在现代C++庠头文件没有’上’扩展名。旧头文件导入其函数 到顶层全局名字空间,对C++需要使用

文档评论(0)

ggkkppp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档