成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

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

  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 ) ) ;  

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

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

恰當地在代碼中使用ASSERT,對bug檢測和提高調試效率有極大的幫助,下面舉個簡單的例子加以說明。

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

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

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

責任編輯:chenqingxiang 來源: 天極
相關推薦

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-11 10:19:57

C++開發工具

2010-01-13 16:08:31

C++語言

2010-01-12 18:35:45

C++語言

2010-03-05 15:43:46

Android SDK

2010-01-21 13:33:44

C++基類

2010-01-07 13:11:09

設置JSON

2010-01-13 09:48:34

Boost庫

2010-01-28 16:05:09

C++風格與技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产一区二区三区 | 波多野结衣一区二区 | 精品免费国产一区二区三区 | 国产欧美一区二区三区久久人妖 | 欧美一区二不卡视频 | 欧美久久久久久久久 | 国产一级毛片精品完整视频版 | 亚洲欧美综合精品久久成人 | 成人午夜激情 | 天堂一区 | 国产精品国产精品国产专区不蜜 | 国产成人高清在线观看 | 亚洲欧美视频一区二区 | www一级片 | 国产精品亚洲一区二区三区在线观看 | 中文字幕成人av | 白浆在线| 欧美一级二级视频 | 亚洲人在线观看视频 | 国产精品毛片无码 | 九九av| 成年人国产在线观看 | 亚洲在线 | 欧美视频在线看 | 日本中文字幕一区 | 日本三级电影在线看 | 99精品99 | 色www精品视频在线观看 | 91在线视频免费观看 | 亚洲免费大片 | 黄色精品 | 国产一级视频在线 | 国产一区三区在线 | 精品伊人久久 | 中文字幕视频在线观看 | 毛片1| 欧美日韩国产一区二区三区 | 午夜精品视频在线观看 | 国产一区高清 | 欧美日韩国产中文字幕 | 亚洲一区影院 |