偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

講述C++語言的種種問題及其技巧說明

開發(fā) 后端
本文講述恰當、靈活的使用C++語言進行主動調(diào)試,能夠極大提高程序的穩(wěn)定性和安全性,減少調(diào)試時間,提高工作效率。

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

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

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

  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)認為是正確的。完整的檢查應該如下:

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

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

  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兩種情況,應該是系統(tǒng)中當時只需要處理這兩種情況,但是如果后期系統(tǒng)需要處理更多的情況,而此時上面這部分代碼又沒有及時更新,或者是因為開發(fā)人員一時疏忽遺漏了。

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

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

責任編輯:chenqingxiang 來源: 天極
相關(guān)推薦

2010-01-12 10:11:36

學習C++語言

2010-01-13 14:17:53

C++編譯語言

2009-12-24 17:37:26

ADO分頁

2010-01-12 10:40:22

C++程序員

2010-01-11 13:37:31

C++語言

2010-01-12 15:24:48

C++語言

2010-01-13 10:31:35

C++代碼

2010-01-13 15:51:44

C++編程語言

2010-01-13 16:44:03

C++

2010-01-13 13:58:49

C++編譯模式

2010-01-11 15:47:37

C++編譯

2010-01-11 15:55:51

C++語言

2010-01-13 16:08:31

C++語言

2010-01-11 10:19:57

C++開發(fā)工具

2010-01-12 18:35:45

C++語言

2010-03-05 15:43:46

Android SDK

2010-01-07 13:11:09

設(shè)置JSON

2010-01-21 13:33:44

C++基類

2010-01-12 16:12:47

C++單元測試

2010-01-13 09:48:34

Boost庫
點贊
收藏

51CTO技術(shù)棧公眾號