日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
講述C++語言的種種問題及其技巧說明

以C++語言標(biāo)準(zhǔn)委員會現(xiàn)主席Herb Sutter老兄以及他編寫的Exceptional系列(已出版的包括:《Exceptional C++》、《More Exceptional C++》、以及《Exceptional C++ Style》)為甚。。

在宜君等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營銷型網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè)公司,宜君網(wǎng)站建設(shè)費(fèi)用合理。

主動調(diào)試和契約編程相輔相成,共同保證軟件開發(fā)的質(zhì)量。契約編程相當(dāng)于經(jīng)濟(jì)生活中簽訂的各種合同,而主動調(diào)試相當(dāng)于某方不遵守合同時(shí)采取的法律懲罰措施。
各種開發(fā)語言和開發(fā)工具都提供這些調(diào)試語句,標(biāo)準(zhǔn)C++提供了assert函數(shù),MFC提供了ASSERT調(diào)試宏幫助我們進(jìn)行主動調(diào)試,在實(shí)際工作中,建議統(tǒng)一使用MFC的ASSERT調(diào)試宏。

參數(shù)檢查
對于編寫的函數(shù),除了明確的指定契約外,在函數(shù)開始處應(yīng)該對傳入的參數(shù)進(jìn)行檢查,確保非法參數(shù)傳入時(shí)立即報(bào)告錯誤信息。例如:

 
 
  1. BOOL GetPathItem ( int i , LPTSTR szItem , int iLen )  
  2. {  
  3. ASSERT ( i > 0 ) ;  
  4. ASSERT ( NULL != szItem ) ;  
  5. ASSERT ( ( iLen > 0 ) && ( iLen < MAX_PATH ) ) ;  
  6. ASSERT ( FALSE == IsBadWriteStringPtr ( szItem , iLen ) ) ;  

這樣的檢查只能夠排除指針為空的情況,但是如果指針指向的是非法地址,或者指針指向的對象并不是我們需要的類型,上面的例子就沒有辦法檢查出來,而是統(tǒng)統(tǒng)認(rèn)為是正確的。完整的檢查應(yīng)該如下:

 
 
  1. // An example of checking only a part of the error condition  
  2. BOOL EnumerateListItems ( PFNELCALLBACK pfnCallback )  
  3. {  
  4. ASSERT ( NULL != pfnCallback ) ;  
  5.  

恰當(dāng)?shù)卦诖a中使用ASSERT,對bug檢測和提高調(diào)試效率有極大的幫助,下面舉個(gè)簡單的例子加以說明。

 
 
  1. switch( nType )  
  2. {  
  3. case GK_ENTITY_POINT:  
  4. // do something  
  5. break;  
  6. case GK_ENTITY_PLINE:  
  7. // do something  
  8. break;  
  9. default:  
  10. ASSERT( 0 );  

在上面的例子中,switch語句僅僅處理了GK_ENTITY_POINT和GK_ENTITY_PLINE兩種情況,應(yīng)該是系統(tǒng)中當(dāng)時(shí)只需要處理這兩種情況,但是如果后期系統(tǒng)需要處理更多的情況,而此時(shí)上面這部分代碼又沒有及時(shí)更新,或者是因?yàn)殚_發(fā)人員一時(shí)疏忽遺漏了。

一個(gè)可能導(dǎo)致系統(tǒng)錯誤或者崩潰的bug就出現(xiàn)了,而使用ASSERT可以及時(shí)地提醒開發(fā)人員他的疏忽,盡可能快的消滅這個(gè)bug。還有一些情況,在開發(fā)人員編寫代碼時(shí),如果能夠確信在某一點(diǎn)出現(xiàn)情況A就是錯誤的,那么就可以在該處加上ASSERT,排除情況A。#t#

綜上所述,恰當(dāng)、靈活的使用ASSERT進(jìn)行主動調(diào)試,能夠極大提高程序的穩(wěn)定性和安全性,減少調(diào)試時(shí)間,提高工作效率。綜上所述,恰當(dāng)、靈活的使用ASSERT進(jìn)行主動調(diào)試,能夠極大提高程序的穩(wěn)定性和安全性,減少調(diào)試時(shí)間,提高工作效率。


本文標(biāo)題:講述C++語言的種種問題及其技巧說明
網(wǎng)頁地址:http://m.5511xx.com/article/djccsjh.html