C/C++的注意事项

         最近调试C语言程序,出了一些错误,费了很大的力气才找到这些BUG。如今把这些错误记录下来,同时作一些编程上的原则上的约束,但愿能达到两个目的:(1)看到相似的状况,能立刻定位知道是什么错误。(2)不在犯这种错误。编程

         将64位整型转换为32位整型,貌似是没什么问题。可是在作多结点间数据通讯的时候,这个不注意的细节将致使很严重的错误。例如在发送端使用的是64位的整型,接收端使用32位整型,这样会致使接收端因为接收缓冲区中的数据没有彻底被反序列化阻塞。ide

        还有使用无符号数的时候必定要注意,由于无符号数减去一个比自身还要大的数,容易出现很严重的问题。原理你们都知道,内部是使用补码存的,可是写程序的时候不必定能注意到。函数

        使用一些底层的库函数时必定要确保传入的数据类型与接口要求的数据类型一致。我就发生过由于使用zlib的compress函数时要求传入unsigned char * 和 unsigned long int *时,我使用了char *和 unsigned int *时出现一些莫名其妙的错误。单元测试

       在使用没有接触的技术或者是底层的库函数的时候,必定要写够测试程序,充分的熟悉接口的使用,而不该该直接集成在软件中,不然会出现很严重的问题。测试

        使用系统调用或者库函数或者第三方软件的函数时,若是有返回值,必定要检查返回值的状况,以判断程序是否正确。可能就是这样一个小小的问题就会致使×××打偏或者卫星脱轨,或者是火车站售票系统上常显示的”XXXX位置的内存不能为读“之类的致命错误。若是函数可能会抛出异常,必定要捕获异常。在调试阶段,出现这样问题时,必定要使用exit或者abort之类的方法,强制程序在此结束,并打出当前的行号、文件名称,若是有必要的话还有堆栈信息等这些重要的调试信息。这些对于肯定程序出错的位置很是有帮助。   调试

       养成读文档的好习惯,出现问题的不少一部分缘由都是没有仔细阅读文档。文档中详细的说明了接口的使用和注意事项,没有注意到这些细节,调试简直就是自食其果。接口

       还有常作单元测试,确保缩写的部分代码可以正常运行。而后再集成到软件中,不然出现问题的付出的代价要大的多。内存

相关文章
相关标签/搜索