打印
[感悟设计]

关于第17.1 地址越界例子,我上来找抽来了

[复制链接]
2385|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我很纠结|  楼主 | 2010-4-6 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天刚拿到书,随便翻了几下,的确很用心,都是平常设计容易出现的问题,总体感觉比较偏硬,大部分我看不太懂,突然对最后面那个小C程序慢有兴趣的,
针对这个小程序我个人提出以下几点观点,大家一起讨论讨论:

1. 类型没有使用typedef定义,不利于跨平台的移植,
2. 即使将10改为50,不可能在某种极端情况下出现异常,
    string数组没有初始化,他的内容是随机,如果恰好在copy的源字符串位置原本
   的'\0'的位置是随机的其它字符,是否会导致显示异常,个人认为strcpy在是遇到
   '\0'后结束的,假设字符串(高压危险)长度是8,如果string[8]存储的不是'\0'或0
   而是一个随机数,那么在显示时是否会继续显示,我个人通常是这样的:

     memset(string, 0, sizeof(string));
     memcpy(string, "Test menu", sizeof("Test menu"));

3.从软件飞起来的角度说,memcpy会不会比strcpy更快一点点,至少strcpy需要判断
   '\0'结束符吧,我地臆断,没有查源码考证,瞎猜猜地

4. printf不知道是自己写的函数,还是库函数,如果是C库函数,个人觉得还是
    printf("%s", string);这样更容易理解些吧,如果是自己写的函数,函数名是不是
    避免与C库函数冲突
5. calc_votage函数中a=result, 应该是AD_result,应该不会是个全局变量吧,
6.个人认为8位单片机还是少做些double folat 类型的运算吧,尽量向算法上想招吧
   就像您最开始说的让软件飞起来,120到0.2是个很大飞跃啊,厉害佩服
7. 不知道是不是排版的问题,整段程序的书写规范没有统一,顶格和缩进比较乱哦

相关帖子

沙发
大道至简| | 2010-6-8 17:39 | 只看该作者
个人认为8位单片机还是少做些double folat 类型的运算吧,尽量向算法上想招吧
===========
如果只是偶尔用一下,8bit单片机也没有什么不可以的。关键是不能频繁地计算浮点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我的人生没有彩排,每天都是现场直逼,只可惜没有观众,收视率为零...

0

主题

20

帖子

1

粉丝