注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

一步一步写嵌入式操作系统6—变参函数的原理和实现3  

2011-11-14 23:24:11|  分类: ARM学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一步一步写嵌入式操作系统6—变参函数的原理和实现3

今天终于有时间将打印两个函数调试成功,然后将其拷贝到FEDORA9下,第一个出现的错误还是比较马虎造成的,把一个字符给敲错了。在第二个文件中,打印函数里在300和303行

处总是报缺少括号,查了半天也查不出个所以然来。本来就怀疑原来在__put_char 这个函数里WHILE后多余的分号,这次看它竟然和其它的长得不一样,于是将其删除,但没想到

结果仍然不对。最后发现300行处是va_end这个宏,跟踪到定义处。这才发现,真得少写了一个括号,改掉就编译过去了。
但是发现结果仍然是不对,在打印函数中,所有的数据都打了出来,但是提示的语言没有了,认真的检查了打印的两个函数,没有发现错误,便把怀疑转到了格式函数上,早不其

然,在这里少写了几行,
 if (fmt != start || !*fmt)
  return fmt - start;
认真的看了下代码,发现其原理如下:
先查找格式符号%,找到后,直接判断是否仍然在头的位置(即没有变化)否则直接返回距离长度,第二次传过来时候,正好是头和%的位置相同,则直接进入下面的判断,而由于

少写了这一块,所以只能判断出后面的格式符号,前面的解释和声明部分便没有了。如果大家不清楚,可以和前面的UBOOT里面的PRINT函数比较一下,异曲同工。
小宝宝提前降生了两周,忙了起来,所以担误了两天的进度,再加上出差到外地,时间真紧啊。
努力学习,勤奋工作,扎扎实实的前进,生活永不言弃。

  评论这张
 
阅读(760)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017