今天做的事情比昨天多!所以收获也是比昨天要多。事实证明,只要你努力去做事情,就肯定会有收获的!说实话,其实每天工作完之后都很累,除了睡觉什么都不想做,但是时间又很长,感觉就这么睡了有点可惜,大家有什么好的建议不妨说说!今天就直接上经验了,没有额外学习什么东西,就争取吧经验讲清楚一点! 1. c/c++
语法中有说明,在工程中定义的全局变量可以在整个工程文件中自由地引用,这是一种很危险的做法,同时也不利于代码的重用(有可能出现重定义的情况)。一种可行的做法是将全局变量前面加上sta
tic
以保证只在本文件中可见。如果确实需要在其他的文件中引用,可以使用关键字extern
进行声明(当然,被static生命的关键字是不可以的),同时,最好在后面标注变量的出处。我昨天说了一点关于代码结构组织的看法,这一点经验也可以说是组织代码的一个小技巧 2. 在进行数据传输的时候,为了增加数据传输的稳定性,除了在软件上增加校验的方法,还必须在硬件上下功夫,比如485
通信的时候,增加配套的终端电阻是很有必要的,能够在根本上增加数据传输的稳定性,这个是真的本质上的飞跃。软件的校验,终究只是硬件能力不足的弥补。
3. 为了防止CRC校验的时候,大小写不匹配的问题,可以比较数值而不是ASCII码。这一点是为了提高用户体验,在输入数据的时候,操作人员会严格遵守规范,这个当然没有问题,但是在加上校验码的时候,就可能偷懒输入小写或是习惯输入大写,这个是有必要考虑的。但是其实理想的情况应该是操作人员只需要输入数据,而校验码由程序自动生成,这才是一种真正好的用户体验。
4. 在编译的时候可以将不用的函数,变量等删除,这样有利于提高编译的成功率。这个经验是因为我在写代码的时候出现了内存溢出的情况,经过百度,发现是由于有过多的变量导致的,然后我就清理了其中一些变量,才完成编译。其实到这里的时候我也发行我的只是体系还是有欠缺,这方面的知识还是应该补充一点才好!
5. 在进行ASCII与HEX码转换的时候,完全可以避免加减运算,而使用移位运算来代替,这样可以大幅度提高效率!这个经验也是在写代码的时候发现的。这个是看见了一个好的结构!两种方式的对比如下:
第一种:
CRC_change[0] = (CRC_change[0] << 12)&0xf000; CRC_change[1] = (CRC_change[1] << 8)&0x0f00;
CRC_change[2] = (CRC_change[2] << 4)&0x00f0;
CRC_change[3] = (CRC_change[3] << 0)&0x000f;
CRC_HEX = CRC_change[0]+CRC_change[1]+CRC_change[2]+CRC_change[3];
return CRC_HEX;
第二种:
return (CRC_change[0] << 12)|(CRC_change[1] << 8)|(CRC_change[2] << 4)|(CRC_change[3] << 0);
两种方式,第二种至少有几个好处:减少了变量的使用;提高了计算的速度;减少了代码的冗余,保护了上一个阶段的数据(在数据处理的时候,尽量保护原始的数据)等等。
今天是真的很累的了,没有进行其他的学习。就是这样了!
PS:本人现在大三,在嵌入式领域只能算是一个刚刚看见门槛的小学生,上面的写的东西大部分是我看的资料,也有一些是我的想法。如果您不小心点开了,又不幸看完了,那么我还真是感激不尽!当然,如果您愿意留下只言片语,或是交流,或是指正,鄙人更是感激万分!
末学后进在这里,希望与大家一起进步,成长!
1