华为常见c、c++软件编程低级错误:变量

华为常见c、c++软件编程低级错误:变量

ID:21716173

大小:670.00 KB

页数:24页

时间:2018-10-20

华为常见c、c++软件编程低级错误:变量_第1页
华为常见c、c++软件编程低级错误:变量_第2页
华为常见c、c++软件编程低级错误:变量_第3页
华为常见c、c++软件编程低级错误:变量_第4页
华为常见c、c++软件编程低级错误:变量_第5页
资源描述:

《华为常见c、c++软件编程低级错误:变量》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2021/7/4公司常见软件编程低级错误:变量C语言软件编程规范工作组前言这套材料作为编程规范的辅助材料,帮助大家理解编程规范背后的原理。C和C++语言是我司的主流编程语言,然而C/C++具有很多强大的语言特性,从而导致C/C++非常复杂,使得代码更容易出现BUG、难以阅读和维护。业界知名的编程规范都对C/C++容易出现问题的语言特性进行管理。例如MISRA(汽车工业软件可靠性联合会)制定的1998版的MISRAC规范指出,一些在C看来可以接受,却存在隐患的地方有127处之多。2004版的MISRAC规范将针对C语言的规则增加到了141条

2、。对于程序员来说,能工作的代码并不等于“好”代码。“好”代码的指标很多,包括可读性、可维护性、可移植性和可靠性等。出现网上问题的代码,大多数是不良编程习惯引起的。不遵守编程规范的代码,往往也是最不可靠的代码。本胶片收集了常见的变量部分案例,给出了相应的纠正措施。对应的编程规范:在首次使用前初始化变量,初始化的地方离使用的地方越近越好;明确全局变量的初始化顺序,避免跨模块的初始化依赖;防止局部变量与全局变量同名;尽量减少没有必要的数据类型默认转换与强制转换。指针初始值错误【问题描述】M设备升级到××版本后只要是与S设备通过扩展ECC连接的网

3、元都会发生频繁复位【问题定位】指针m_BoardObject没有申请内存,但赋值为1。后续程序执行时,判断m_BoardObject不等于NULL,于是处理X号板业务。但实际上产品并没有安装X号板,导致系统复位。【纠正措施】指针m_BoardObject没有使用时,赋初值为NULL。【举一反三】开发人员处理指针时,通常认为非空指针是合法的,然后就可能调用它。绝对不要写作违背大家习惯的代码。变量在某些条件下没有初始化【问题描述】在设备增加对象到最大值时,系统出现段错误【问题定位】代码如下:VOS_UINT32ulSlotIndex;....

4、...if(MAX_STACK_CAP>m_ulThirdKeyMax){pstSlotStru=(SLOT_STRU*)(m_pucSlotStru+ulSlotIndex*m_ulSlotStruSize);if(VOS_NULL_PTR!=pstSlotStru->apObj[ulThirdKey]){returnERROR_PARC_TABLE_OBJ_ALREADY_EXIST;}pstSlotStru->apObj[ulThirdKey]=pObj;++m_ulObjNum;++pstSlotStru->ulObjNum;}e

5、lseif(0==ulThirdKey)//如果不是索引,同时第三级关键字为0,那么不用分配槽表项{ulSlotIndex=m_astSubrack[ulSubrackNo].aulSlotIndex[ulSlotNo];.......}pstSlotStru->apObj[ulSlotIndex]=0;见红色部分代码,我们可以发现在第一个if中,ulSlotIndex没有被赋值,还是维持初始值VOS_NULL_LONG。最后用这个去访问数据,结果出现踩内存结构成员没有初始化(1)【问题描述】位置登记成功后,LM漫游的用户类型变成了区域漫

6、游类型【问题定位】代码如下:structTProfileChangedInd{unsignedcharprofile:1;//1:表示被修改0:没有修改unsignedcharwinService:1;unsignedcharmwnCount:1;unsignedcharreserved:5; };((TProfileChangedInd*)sqlProfileChangedInd.arr)->profile=True;由于只对该结构的profile位进行了赋值,就更新数据库,该结构的其他位的值取了随机值,导致用户的签约类型变化。【纠正措

7、施】将结构的其他成员赋初始值为0,代码如下:*sqlProfileChangedInd.arr=0;((TProfileChangedInd*)sqlProfileChangedInd.arr)->profile=True;结构成员没有初始化(2)【问题描述】HFSSA2到HFAIP2局向接通率凌晨时候偏低【问题定位】代码如下:ediDspInfo[oeEntity.m_btEntitySeq].m_dwNMEntityId=oeEntity.m_dwNMEntityId;ediDspInfo[oeEntity.m_btEntitySeq

8、].m_btValid=1;ediDspInfo[oeEntity.m_btEntitySeq].m_btDisplayFormat=oeEntity.m_btDisplayFormat;发现

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。