下载此文档

C语言的知识点复习.doc


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
最近开始学习《Linux设备驱动程序第三版》,参阅牛人关于嵌入式开发的准备知识点,编写了学。1、宏尽管在学习C的时候,牛人们往往不厌其烦的教导我们:应该尽量避免使用宏,但是在linux代码中宏的使用却非常普遍。除了移植性好,估计还是方便使然。使用宏最应该注意的是侧效可能引起的副作用,当然没有了类型检测,也是需要特别小心的地方。示例代码:/*写一个宏MAX,输入两个参数并返回较大的一个*/#defineMAX(a,b)((a)>(b)?(a):(b))显然的,语义简单明了。这里用括号避免了侧效,但是得注意a、b类型。2、死循环关于的死循环的使用,牛人们提供了多种写法,一般有如下三种写法:A、while(1)B、for(;;)C、LOOP:gotoLOOP;有时候我也挺郁闷的,怎么会没有统一的写法呢?用哪种好呢?所以也尝试着分析了一下,以下是测试代码,:intmain(intargc,char*argv[]){inti=0,j=0;while(1)00401036moveax,10040103Btesteax,eax0040103Djemain+44h(00401054){if(i++==10)0040103Fmovecx,dwordptr[ebp-4]00401042movedx,dwordptr[ebp-4]00401045addedx,100401048movdwordptr[ebp-4],edx0040104Bcmpecx,0Ah0040104Ejnemain+42h(00401052)break;00401050jmpmain+44h(00401054)}00401052jmpmain+26h(00401036)for(;;){if(j++==10)00401054moveax,dwordptr[ebp-8]00401057movecx,dwordptr[ebp-8]0040105Aaddecx,10040105Dmovdwordptr[ebp-8],ecx00401060cmpeax,0Ah00401063jnemain+57h(00401067)break;00401065jmpmain+59h(00401069)}00401067jmpmain+44h(00401054)LOOP:if(k++==10)004013C0movedx,dwordptr[ebp-0Ch]004013C3moveax,dwordptr[ebp-0Ch]004013C6addeax,1004013C9movdwordptr[ebp-0Ch],mpedx,0Ah004013CFjneLOOP+13h(004013d3)gotoSTEP_EXIT;004013D1jmpSTEP_EXIT+4(004013d9)gotoLOOP;004013D3jmpLOOP(004013c0)STEP_EXIT:return0;}:B、C的效率是一样的,A多出了3条指令的判断代码,但是一般的情况下,牛人们又建议少使用goto,所以B是最优的选择。的汇编代码(+):.file"".,***@functionmain:push

C语言的知识点复习 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人fy3986758
  • 文件大小0 KB
  • 时间2016-02-29