今天刚拿到书,随便翻了几下,的确很用心,都是平常设计容易出现的问题,总体感觉比较偏硬,大部分我看不太懂,突然对最后面那个小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. 不知道是不是排版的问题,整段程序的书写规范没有统一,顶格和缩进比较乱哦 |