ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:44KB ,
资源ID:9400557      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9400557.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(gcc编译c问题.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

gcc编译c问题.doc

1、1、Linux C语言编程错误解决之 “warning: the `gets' function is dangerous and should not be used. 问题出在程序中使用了 gets Linux 下gcc编译器不支持这个函数,解决办法是使用 fgets fgets()函数的基本用法为:fgets(char * s,int size,FILE * stream); /* 代码实现 */ #include int main ( ) { char crack8[20]; printf("\n 输入任意字符 :

2、"); fgets(crack8, 20, stdin);//stdin 意思是键盘输入 fputs(crack8, stdout); //stdout 输出 return 0; } 2、逻辑错误与语法错误 在编程时,出现的错误可能有逻辑错误和语法错误两种。这两种错误的发生原因和处理方法是不同的。本节将讲述这两种错误的处理方法。 逻辑错误指的是程序的设计思路发生了错误。这种错误在程序中是致命的,程序可能正常编译通过,但是结果是错误的。当程序正常运行而结果错误时,一般都是编程的思路错误。这时,需要重新考虑程序的运算方法与数据处理流程是否正确。

3、 语法错误:语法错误指的是程序的思路正确,但是在书写语句时,发生了语句错误。 这种错误一般是编程时不小心或是对语句的错误理解造成的。在发生语句错误时,程序一般不能正常编译通过。这时会提示错误的类型和错误的位置,按照这些提示改正程序的语法错误即可完成错误的修改。 3、 C 程序中的错误与异常 C 程序中的错误,根据严重程序的不同,可以分为异常与警误两类。在编译程序时,这两种情况对编译的影响是不同的,对错误与异常的处理方式是不同的。 1.什么是异常 异常指的是代码中轻微的错误,这些错误一般不会影响程序的正常运行,但是不完全符合编程的规范。在编译程序时,会产生一个“警告”,但是

4、程序会继续编译。下面的程序会使 程序发生异常,在编译时产生一个警告错误。 ? 在除法中,0 作除数。 ? 在开方运算时,对负数开平方。 ? 程序的主函数没有声明类型。 ? 程序的主函数没有返回值。 ? 程序中定义了一个变量,但是没有使用这个变量。 ? 变量的存储发生了溢出。 2.什么是错误 错误指的是程序的语法出现问题,程序编译不能正常完成,产生一个错误信息。这时会显示错误的类型与位置。根据这些信息可以对程序进行修改。 4、编译中的警告提示 在编译程序时,如果发生了不严重的异常,会输出一个错告错误,然后完成程序的编译。 例如下面的内容是一个程序在编译时产生的警告。

5、 5.1.c: In function 'main': 5.1.c:16: 警告:‘main’ 的返回类型不是 ‘int’ 5.1.c:18: 警告:被零除 这些的含义如下所示。 (1)“In function 'main':”表示发生的异常在main 函数内。 (2)“5.1.c:16:”表示发生异常的文件是5.1.c,位置是第16 行。 (3)下面的信息是第16 行的异常,表明程序的返回类型不正确。 ‘main’ 的返回类型不是 ‘int’ (4)下面的警告信息表明程序的第18 行有除数为0 的错误。 5.1.c:18: 警告:被零除 1.8.4 找不到包含文件的错误

6、 程序中的包含文件在系统或工程中一定要存在,否则程序编译时会发生致命错误。例如 下面的语句包含了一个不正确的头文件。 #include 编译程序时,会发生错误,错误信息如下所示。 5.1.c:2:20: 错误:stdio2.h:没有那个文件或目录 1.8.5 错误地使用逗号 程序中逗号的含义是并列几个内容,形成某种算法或结构。程序中如果错误地使用逗号,会 使程序在编译时发生致命错误。例如下面的代码,是程序中的if 语句后面有一个错误的逗号。 int max(int i,int j ) { if(i>j), { return(i); } els

7、e { return(j); } } 程序编译时输出的错误信息如下所示。表明max 函数中逗号前面的表达式有错误,实际上的错误是多一个逗号。 5.1.c: In function ‘max’: 5.1.c:4: 错误:expected expression before ‘,’ token 5.1.c: In function ‘max’: 1.8.6 括号不匹配错误 程序中的引号、单引号、小括号、中括号、大括号等符号必须成对出现。这方面的错误 会使程序发生符号不匹配的错误。发生这种错误后,编译程序往往不能理解代码的含义,也 不能准确显示错误的位置,而是显示表达式错误。

8、例如下面的代码,在最后一行上了一个花 括号。 int max(int i,int j ) { if(i>j) { return(i); } else { return(j); } 编译程序时,会显示下面的错误信息。 5.1.c:22: 错误:expected declaration or statement at end of input 1.8.7 小括号不匹配错误 程序中的小括号一般在一行内成对出现并且相匹配。小括号不匹配时,程序发生致命错误。例如下面的代码,第一行多了一个右半边括号。 if(i>j)) { return(i); } else {

9、 return(j); } 编程程序时,会发生下面的错误。显示括号前面有错误,并且导致下面的else 语句也有 错误。 5.1.c:4: 错误:expected statement before ‘)’ token 5.1.c:8: 错误:expected expression before ‘else’ 1.8.8 变量类型或结构体声明错误 程序中的变量或结构体的名称必须正确,否则程序会发生未声明的错误。例如下面的代码,用一个不存在的类型来声明一个变量。 ch a; 程序在运行时,会显示出这个变量错误,并且会显示有其他的错误。 5.1.c:17: 错误:‘ch’ 未声明

10、在此函数内第一次使用) 5.1.c:17: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其 5.1.c:17: 错误:所在的函数内只报告一次。) 5.1.c:17: 错误:expected ‘;’ before ‘a’ 1.8.9 使用不存在的函数的错误 如果程序引用了一个不存在的函数,会使用程序发生严重的错误。例如下面的代码,引 用了一个不存在的函数add。 k=add(i,j); 程序显示的错误信息如下所示,表明在main 函数中的add 函数没有定义。 /tmp/ccYQfDJy.o: In function `main': 5.1.c:(.text+0x

11、61): undefined reference to `add' collect2: ld 返回 1 5.8.10 大小写错误 C 程序对代码的大小写是敏感的,不同的大小写代表不同的内容。例如下面的代码,将 小写的“int”错误的写成了“Int”。 Int t; 程序显示的错误信息如下所示,表明“Int”类型不存在或未声明。发生这个错误时,会 输出多行错误提示。 5.1.c:16: 错误:‘Int’ 未声明 (在此函数内第一次使用) 5.1.c:16: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其 5.1.c:16: 错误:所在的函数内只报告一次。) 5.1

12、c:16: 错误:expected ‘;’ before ‘t’ 1.8.11 数据类型的错误 程序中的某些运算,必须针对相应的数据类型,否则这个运算会发生数据类型错误。例 如下面的代码,错误地将两个整型数进行求余运算。 float a,b; a= a %b ; 程序编译时,输出下面的错误,表明“%”运算符的操作数无效。 5.1.c:19: 错误:双目运算符 % 操作数无效 1.8.12 赋值类型错误 任何一个变量,在赋值时必须使用相同的数据类型。例如下面的代码,错误地将一个字符串赋值给一个字符。 char c; c="a"; 程序编译时的结果如下所示,表明赋值时数据

13、类型错误。 5.1.c:19: 警告:赋值时将指针赋给整数,未作类型转换 1.8.13 循环或判断语句中多加分号 分号在程序中的作用是表示一个语句结束。在程序的语句中用一个单独的分号表示一个 空语句。但是在循环或判断结构的后面,一个分号会导致程序的逻辑发生错误。关于这些结 构的使用方法,后面的章节将会详细讲到。下面的程序,在for 语句的后面,错误的添加了一个分号,导致程序不能正常地进行循环。 #include main() { int sum, j; sum=0; for(j=0;j<11;j++); { sum=sum+j; } print

14、f(“%d”,sum); } 这个程序的本意是要求出10 以内的整数和。但是在for 语句的后面,错误地使用了一个分号。这时,程序不能正确地进行循环,而是把分号作为一个语句进行循环,所以程序输出的结果为“11”。 静态库的代码在编译时就已链接到开发人员的应用程序中。静态库的后缀名是。a共享库是在程序开始运行时被加载。共享库后缀由。so和版本号组成 如数学共享库库名是libm。so。5    ,这里的标识字符为m,版本号为5 libm。a则是静态数学库.   -I

       指定头文件搜索路径(注意是大写英文字母) 如  gcc   hello.c   -I/root

15、/gcc/  -o   hello -L

        指定库文件搜索路径 如   gcc  hello.c   -L/root/gcc/lib    -o   hello 上面2个都是指定路径,而不是文件。   使用链接库     -l  (小写) 指定具体的库文件,由于linux中库函数都是以lib开头的,这里的库文件只需填写lib之后的内容就可以 如有静态库文件libm。a   ,则在调用是只需要填写-lm 若是共享库libm。so      也只是需填写-lm   在调试阶段尽量不进行优化。   嵌入式linux调试器GDB的使用 1.进入GDB  

16、     如      gdb   tets   2查看文件 ,键入“l”或者“list”    3.设置断点    b    行号      如   b   6     在第6行加入断点 4.  查看断点处情况   info  b 5运行代码     r 6.  查看变量  p  变量名    如(gdb)p  n      $1 = 0      (gdb) p i       $2 = 134518440 GDB在显示变量值时都会在对应值之前加上“$N”标记,它是当前变量的引用标记,若要再次引用可用“$N”代替变量名 7.观察变量     watch  变量名

17、 8.单步运行     n     9.程序继续运行     c    10  退出GDB       q                                                      常用GDB命令 break + 设置断点的行号     tbreak + 行号或函数名      设置临时断点,到达后被自动删除  break + filename + 行号         用于指定文件的对应行设置断点 break  + 行号 + if +条件  clear + 要清除断点行号 delete + 要清除的断点编号 disable  + 断点

18、编号        使断点失效 enable + 断点编号           使能断点 print或p + 变量或表达式 finish            一直运行到函数返回     make工程管理 vi  Makefile 或者 vi  makefile  目标体target      依赖文件 dependency_file         运行的命令command #后面表示注释 格式 target :dependency_file            command 注意每一个command前必须有“tab”符,否则会出错 例子: #The  si

19、mplest  example edit : main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o          gcc -o edit main.o kbd.o command.o display.o \          insert.o search.o files.o utils.o main.o : main.c defs.h         gcc -c main.c  -o  main kbd.o : kbd.c defs.h command.h         gcc -

20、c kbd.c   -o   kbd.o command.o : command.c defs.h command.h          gcc -c command.c    -o   command.o display.o : display.c defs.h buffer.h            gcc -c display.c     -o  display.o insert.o : insert.c defs.h buffer.h           gcc -c insert.c       -o   insert.o search.o : search.c def

21、s.h buffer.h           gcc -c search.c     -o  search.o  files.o : files.c defs.h buffer.h command.h           g cc -c files.c        -o  file.o utils.o : utils.c defs.h             gcc -c utils.c    -o utils.o  clean :           rm edit main.o kbd.o command.o display.o \           insert.

22、o search.o files.o utils.o Makefile变量 VAR = var 使用变量格式:$(VAR) 例子: OBJS = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(OBJS)        gcc -o edit $(OBJS) main.o : main.c defs.h        gcc -c main.c kbd.o : kbd.c defs.h command.h        gcc -c kbd.c comman

23、d.o : command.c defs.h command.h         gcc -c command.c display.o : display.c defs.h buffer.h          gcc -c display.c insert.o : insert.c defs.h buffer.h           gcc -c insert.c search.o : search.c defs.h buffer.h           gcc -c search.c files.o : files.c defs.h buffer.h command.h  

24、        gcc -c files.c utils.o : utils.c defs.h         gcc -c utils.c clean :          rm edit  $(OBJS)   makefile中常见自动变量 $@             目标文件的完整名称 $^                所有不重复依赖文件,以空格分开 例子: OBJS = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(OBJS)        gcc $^  -o  $@

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服