第一部分 代碼開發(fā)技巧
第1章 編寫好的代碼.
l.l 誰需要本書?
l.2 教學方法
1.3 從何處開始閱讀?
1.4 警告!并非所有的C/C++編譯器都完全相同
1.5 語言無關的設計工具101
1.5.l 準備
1.5.2 模型!
l.5.3 結構圖、偽代碼及IPO框圖
l.6 好的程序設計的五點要素
1.7 規(guī)則意味著可以打破
1.7.1 安塞爾亞當斯(Ansel Adams)或畢加索(Picasso)
1.7.2 注釋塊
1.7.3 標識符:identifiers、IDENTIFIERS和Identifiers
1.7.4 間隔與縮進
1.8 數(shù)據(jù)類型
1.9 匈牙利表示法
l.9.1 MFC、句柄、控件及結構的命名規(guī)范
1.9.2 一般前綴命名規(guī)范
1.9.3 變量命名規(guī)范
1.9.4 應用程序符號命名規(guī)范
1.9.5 Microsoft MFC宏命名規(guī)范
1.9.6 庫標識符命名規(guī)范
1.9.7 靜態(tài)庫版本命名規(guī)范
1.9.8 動態(tài)連接庫命名規(guī)范
1.9.9 windows.h命名規(guī)范
1.10 操作符優(yōu)先級
1.11 小結
第2章 使用編譯器憂化
2.l 編碼的責任與編譯器的優(yōu)化
2.2 Microsoft Visual C++的優(yōu)化
2.2.1 調度指令
2.2.2 函數(shù)級連接
2.2.3 字符串池
2.2.4 使用register鍵字
2.2.5 常量和復制的傳播
2.2.6 消除死代碼和死存儲
2.2.7 刪除冗余于表達式
2.2.8 優(yōu)化循環(huán)
2.2.9 降低強度
2.2.10 inline鍵字的使用
2.2.11 省略幀指針
2.2.12 關閉堆棧檢查
2.2.13 覆蓋堆棧
2.2.14 函數(shù)調用之間允許使用別名
2.2.15 全局優(yōu)化
2.2.16 產生內部函數(shù)的內聯(lián)
2.2.17 優(yōu)化math.h
2.3 Microsoft C++的優(yōu)化開關
2.4 使用 Microsoft Visual Studio設置編譯器選項
2.4.1 Project Settings對話框中的 General類型
2.4.2 Project Settings對話框中的 Code Generation類型
2.4.3 選擇結構對齊方式
2.4.4 Project Settings對話框中的 Customize類型
2.4.5 Project Settings對話框中的 Optimizations類型
2.5 建立發(fā)行版本的建議
2.6 小結
第3章 邏輯與語法錯誤
3.l 好的調試策略
3.2 四種程序錯誤類型
3.2.l 語法錯誤
3.2.2 連接錯誤
3.2.3 運行錯誤
3.2.4 邏輯錯誤
3.3 查看錯誤消息
3.4 預防性維護
3.4.l 桌面檢查的含義
3.5 異常處理設計
3.6 “請多多支持”
3.7 Microsoft Visual C++的幫助
3.8 小結
第4章 debugger
4.l 確認Debugger可以使用
4.2 啟動Debugger
4.2.1 Step Into和Step Over的區(qū)別
4.2.2 Go
4.2.3 Run to Cursor
4.3 理解Debugger工具欄圖標
4.3.1 Restart
4.3.2 Stop Debugging
4.3.3 Break Execution
4.3.4 Apply Code Changes、Edit and Continue
4.3.5 Show Next Statement
4.3.6 Step Into
4.3.7 Step Over
4.3.8 Step Out
4.3.9 Run to Cursor
4.3.10 Quick watch
4.3.11 Watch
4.3.12 Variables
4.3.13 Regisers
4.3.14 Meomry
4.3.15 Call Stack
4.3.16 Disassembly
4.3.17 Debugger Toolbar Menu Equivalents
4.4 其他Debug菜單選項
4.4.1 Step Into Specific Function
4.4.2 Excmpions
4.4.3 Threads
4.4.4 Modules
4.5 本地菜單Debugger選項
4.5.1 List Members
4.5.2 Type Info
4.5.3 Parameter Information
4.5.4 Complete Word
4.5.5 Go Definition/Refefence
4.5.6 Go To Disassembly
4.5.7 Insert/Remove Breakpoint。
4.6 Debugger窗口
4.6.1 Trae窗口
4.6.2 Watch窗口
4.7 View菜單和Debugger窗口
4.7.1 Workspace
4.7.2 Output
4.8 以不同的數(shù)據(jù)類型查看觀察變量
4.9 打開Just-in-Time調式
4.10 Options窗口中的Debug標簽
4.10.1 Hexadecimal Display
4.10.2 Source Annotation
4.10.3 Code Bytes
4.10.4 Symbols
4.10.5 Parameter Values
4.10.6 Parameter Types
4.10.7 Return Value
4.10.8 Load COEF& Exports
4.10.9 Address
4.10.10 Format
4.10.11 Re-evaluate Expression
4.10.12 Show Data Bytes
4.10.13 Fixed Width
4。10.14 Display Unicode Strings
4.10.15 View Floating Point Registers
4.10.16 Just-in-Time Debugging
4.10.17 OLE RPC Debugging
4.10.18 Debug Commands Invoke Edit and Continue
4.11 鍵盤映射
4.12 Debugger快捷鍵
4.13 小結
第5章 調試版本與發(fā)行版本
5.l 缺省的調試版本建立與發(fā)行版本建立設置
5.2 為調試版本建立修改工程設置
5.2.l 修改調試選項
5.2.2 修改產生調試信息的格式
5.2.3 產生一個映射文件
5.2.4 重定向調試輸入和輸出
5.3 什么是.pdb文件?
5.4 什么是.dbg文件
5.5 調試優(yōu)化的代碼
5.6 打開Debugger的另一種方法
5.7 使用基本版或調試版本
5.8 C/C++運行調試庫
5.8.l 舊版iostream.h和新版iostrearn之間的混亂
5.9 連接器參考資料
5.10 在調試版本中檢測發(fā)行版本錯誤
5.10.l 局部變量的自動初始化
5.10.2 檢查函數(shù)指針調用稚棧的合法性
5.10.3 檢查調用堆棧的合法性
5.11 TRACEN
5.12 VEAIFY宏
5.13 移植Visual C++舊的32位版本
5.13.l 轉換早期的32位工作空間和工程
5.13.2 與Visual C++以前的版本共存
5.14 小結
第二部分 面向過程的環(huán)境
第6章 定位、分析和修復命令行代碼錯誤
6.l 快速啟動調試
6.1.l 啟動Debugger的快速方法
6.1.2 變量初始化跟蹤
6.1.3 小心調試代碼
6.1.4 快速查看變量的內容
6.1.5 中途停止Debugger
6.1.6 執(zhí)行到代碼的指定行
6.l.7 全速執(zhí)行到一個斷點
6.1.8 運行至光標處
6.1.9 現(xiàn)在測試
6.2 高級Debugger技巧
6.2.l 使用新值運行
6.2.2 循環(huán)調試技巧
6.2.3 調用調試函數(shù)
6.2.4 遞歸調用與調用堆棧
6.2.5 查看反匯編代碼
6.3 進一步觀察變量
6.3.l 使用QuickWatch窗口
6.3.2 使用Watch窗口
6.4 小結
第7章 調試內聯(lián)匯編語言代碼
7.l 匯編語言初步
7.1.l 數(shù)據(jù)類型
7.1.2 寄存器
7.1.3 尋址模式
7.1.4 指針
7.1.5 協(xié)處理器
7.2 調試
7.2.l 減法運算
7.2.2 使用256位整數(shù)
7.2.3 程序循環(huán)
7,2.4 使用協(xié)處理器求和實數(shù).
7.2.5 使用協(xié)處理器計算正切值
7.3 小結
第8章 在Windows代碼中定位、分析和修復錯誤
8.l 使用兩臺計算機調試
8.1.l 準備遠程目標計算機
8.1.2 準備主計算機
8.1.3 啟動調試會話
8.2 簡明Windows入門
8.2.l 基本的Windows代碼
8.2.2 調試文件詳述
8.2.3 程序執(zhí)行的情況
8.3 調試
8.3.l 一個動畫位圖程序
8.3.2 使用鼠標繪畫
8.4 小結
第三部分 面向對象過程的環(huán)境
第9章 定位、分析和修復命令行中的錯誤
9.l 高級調試工具
9.l.l 內存卸出
9.1.2 定位錯誤參數(shù)從何處傳遞而來
9.1.3 查找何處修改了指針
9.2 Class View窗口要素
9.2.1 ClassView窗口的 Grouped by Access功能
9.2.2 ClassView窗口的 Base Classes功能
9.2.3 ClassView窗口的 References功能
9.2.4 ClassView窗口的 Derived Classes功能
9.2.5 ClassView窗口中菜單的其余項
9.2.6 ClassView窗口的Properities功能
9.2.7 在ClassView窗日中添加文件夾
9.2.8 在文件夾之間移動類
9.2.9 隱藏或顯不 ClassView窗口
9.3 調試ardc和argv[]
9.4 小結
第10章 使用MFC類庫開發(fā)Windows程序
10.l 為什么使用類庫
10.2 一個真正的基礎類一一CObject
10.3 什么是應用程序向導和類向導
10.4 一個圖形程序
10.4.l 使用AppWizard
10.4.2 使用 ClassWizard
10.4.3 建立AppWizard代碼
10.4.4 AppWizard模板代碼
10.4.5 在客戶區(qū)的圖形對象
10.5 剖面法
10.6 小結
第11章 定位、分析和修復 MFC Windows代碼中的錯誤
11.l 內存問題
11.1.l 有問題的代碼
11.1.2 定位和分析
11.1.3 修復工程
11.2 繪圖問題
11.2.l 有問題的代碼
11.2.2 定位和分析
11.2.3 修改工程
11.3 小結
第四部分 標準模板庫(STL)
第12章 STL編程實踐
12.1 多體系結構..
12.2 掌握 C++
12.3 STL——進退維谷的數(shù)據(jù)結構
12.4 初識 STL
12.5 STL和HP公司
12.6 大眾化的 STL
12.7 STL總覽
12.8 ANSI/ISO C++接受STL的過程
12.9 STL基本組件
12.9.l 什么是容器?
12.9.2 什么是適配器?
12.9.3 什么是算法?
12.9.4 什么是迭代器?
12.9.5 其他的STL組件
12.10 完整的STL程序包
12.11 雜亂的C/C++家族
12.12 回顧數(shù)據(jù)結構
12.12.l 靜態(tài)與動態(tài)
12.12.2 類型指針
12.12.3 VOid指針
12.13 復習匈牙利命名法
12.14 函數(shù)重載
12.15 函數(shù)指針
12.16 運算符重載
12.16.l 運算符和函數(shù)調用的重載
12.16.2 編寫自己的重載運算符
12.17 從結構到模板
12.17.l template關鍵字
12.17.2 模板語法
12.17.3 模板函數(shù)
12.17.4 模板類
12.18 為什么STL比模板好
12.19 小結
第13章 定位、分析和修復STL代碼中的錯誤
13. l 從標準C++轉向STL語法的過程中出現(xiàn)的問題
13.1.l 用迭代器遍歷容器
13.1.2 仔細研究迭代器
13.1.3 流迭代器
13.1.4 為什么使用end()
13.1.5 復制列表
13.1.6 列表中的列表
13.1.7 STL字符串指針的麻煩
13.1.8 釋放 STL指針
13.2 一個C++程序轉變?yōu)镾TL語法的例子
13.2.l 第一步——更新aSingleCard類
13.2.2 第二步——更新 WarDeck類
13.2.3 第三步——修復STL代碼的執(zhí)行錯誤
13.2.4 第四步——更新Opponent類
13.2.5 第五步——運轉的STL程序
13.3 STL語法的源文件Wargame.cpp
13.4 小結
第五部分 特殊的調試問題
第14章 使用DLL工作
14.l 創(chuàng)建一個基于MFC的動態(tài)鏈接庫
14.1.l 頭文件 Framer.h
14.1.2 源代碼文件Framer.cpp
14.1.3 建立Framer.dll
14.2 創(chuàng)建使用DLL的主應用程序
14.2.l 頭文件 DLLDemoView.h
14.2.2 源代碼文件DLLDemoView.cpp
14.3 更加仔細地查看
14.3.1 遠程調試
14.3.2 有問題的代碼
14.3.3 改正后的代碼
14.4 小結
第15章 使用ActiveX控件工作
15.1 開發(fā)一個 ActiveX控件
15.1.l 使用Colltrolwizard
15.1.2 Test Container
15.1.3 產生一個真實的Clock控件
15.2 調試 Clock控件
15.2.l 準備遠程目標計算機
15.2.2 準備主計算機
15.2.3 開始調試過程
15.2.4 查找問題
15.3 小結
第16章 調試 COM、ATL和DHTML
16.1 COM對象模型
16.2 創(chuàng)建一個ATL多邊形工程
16.2.1 優(yōu)化模塊代碼
16.2.2 測試控件
16.3 調試ATLCOM控件
16.4 小結
第17章 STL和 MFC編程
17.l 產生一個STL和MFC應用程序
17.1.l 復數(shù)
17.1.2 模板語法
17.1.3 基本的應用程序代碼
17.2 調試
17.3 小結