• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

华为软件编程规范和范例

发布: 2008-4-23 16:04 | 作者: 不详 | 来源: www.cppblog.com/oosky | 查看: 471次 | 进入软件测试论坛讨论

领测软件测试网


内存: 0          1         2    ...  (从低到高,以字节为单位)
exam  exam低字节  exam高字节
内存:         0 bit     1 bit      2 bit    ...  (字节的各“位”)
EXAM_BIT     A1        A2         A3
如下是68360 CPU生成短整数及位域的方式。
内存: 0          1         2    ...  (从低到高,以字节为单位)
exam  exam高字节  exam低字节
内存:         7 bit     6 bit      5 bit    ...  (字节的各“位”)
EXAM_BIT     A1        A2         A3
说明:在对齐方式下,CPU的运行效率要快得多。
示例:如下图,当一个long型数(如图中long1)在内存中的位置正好与内存的字边界对齐时,CPU存取这个数只需访问一次内存,而当一个long型数(如图中的long2)在内存中的位置跨越了字边界时,CPU存取这个数就需要多次访问内存,如i960cx访问这样的数需读内存三次(一个BYTE、一个SHORT、一个BYTE,由CPU的微代码执行,对软件透明),所有对齐方式下CPU的运行效率明显快多了。
     1       8       16      24      32
     ------- ------- ------- -------
     | long1 | long1 | long1 | long1 |
     ------- ------- ------- -------
     |       |       |       | long2 |
     ------- ------- ------- --------
     | long2 | long2 | long2 |       |
     ------- ------- ------- --------
     | ....
〔六〕 =====[ 函数、过程 ]===== 
¹6-1 :对所调用函数的错误返回码要仔细、全面地处理 
¹6-2 :明确函数功能,精确(而不是近似)地实现函数设计 
¹6-3 :编写可重入函数时,应注意局部变量的使用(如编写C/C++ 语言的可重入函数时,应使用auto 即缺省态局部变量或寄存器变量) 
说明:编写C/C++语言的可重入函数时,不应使用static局部变量,否则必须经过特殊处理,才能使函数具有可重入性。
¹6-4 :编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P 、V 操作)等手段对其加以保护 
说明:若对所使用的全局变量不加以保护,则此函数就不具有可重入性,即当多个进程调用此函数时,很有可能使有关全局变量变为不可知状态。 
示例:假设Exam是int型全局变量,函数Squre_Exam返回Exam平方值。那么如下函数不具有可重入性。
unsigned int example( int para )
{
    unsigned int temp;
    Exam = para; // (**)
    temp = Square_Exam( );
    return temp;
}
此函数若被多个进程调用的话,其结果可能是未知的,因为当(**)语句刚执行完后,另外一个使用本函数的进程可能正好被激活,那么当新激活的进程执行到此函数时,将使Exam赋与另一个不同的para值,所以当控制重新回到“temp = Square_Exam( )”后,计算出的temp很可能不是预想中的结果。此函数应如下改进。
unsigned int example( int para )
{
    unsigned int temp;
    [申请信号量操作]        // 若申请不到“信号量”,说明另外的进程正处于
    Exam = para;            // 给Exam赋值并计算其平方过程中(即正在使用此
    temp = Square_Exam( );  // 信号),本进程必须等待其释放信号后,才可继
    [释放信号量操作]        // 续执行。若申请到信号,则可继续执行,但其
                            // 它进程必须等待本进程释放信号量后,才能再使
                            // 用本信号。
    return temp;
}

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网