• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    華為軟件編程規范和范例

    發布: 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;
    }

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>