硬體配置:
586以上PC相容機或品牌機,配有彩色顯示器、滑鼠、鍵盤,記憶體不小于20MB,硬
盤自由空間不少于60MB。推薦配置為記憶體32MB或64MB(或以上),硬碟自由空間500MB
以上。
軟體配置:
1、作業系統:Windows98,windows 2000,windows XP,Linux,UNIX
2、內建開發環境:
(1)在Windows98,windows 2000,windows XP系統下,主要的開發編譯環境有Turbo
C/C++ 3.0、Borland C++ 3.1、Microsoft Visual C++6.0、DJGPP,其中DJGPP是GCC在
DOS/Windows作業系統下的移植。本實驗指導書使用的開發環境為Microsoft Visual C++6.0
英文版。漢化版本隻是把部分菜單漢化了且用詞很不準确。
(2)在Linux、UNIX系統下,采用GCC編譯環境。本實驗指導書不涉及相關内容,
有興趣的同學可以自行學習。
1.2 Visual C++ 6.0的使用
1.2.1 Visual C++介紹
Visual C++是Microsoft公司的Visual Studio開發工具箱中的一個C++程式開發包。Visual
Studio提供了一整套開發Internet 和Windows應用程式的工具,包括Visual C++,Visual
Basic,Visual FoxPro,Visual InterDev,Visual J++以及其他輔助工具,如代碼管理工具Visual
SourceSafe和聯機幫助系統MSDN。Visual C++包中除包括C++編譯器外,還包括所有的庫、
例子和為建立Windows應用程式所需要的文檔。
從最早期的1.0版本發展6.0版本,到最新的.NET 版本,Visual C++已經有了很大的變
化,在界面、功能、庫支援方面都有許多的增強。6.0版本在編譯器、MFC類庫、編輯器以
及聯機幫助系統等方面都比以前的版本做了較大改進。
Visual C++一般分為三個版本:學習版、專業版和企業版,不同的版本适合于不同類型的
應用開發。實驗中可以使用這三個版本的任意一種。
1.2.2 Visual C++的安裝和啟動
如果你的計算機未安裝Visual C++6.0,則應先安裝Visual C++6.0。Visual C++是Visual
Studio的一部分,是以需要Visual Studio 的CD光牒,執行其中的setup.exe,并按螢幕上的提示
安裝即可。安轉完畢後,在Windows的 “開始” 菜單的程式子菜單中會出現“Microsoft visual
C++程式設計實驗指導書
2
Studio”子菜單,如圖1-1所示
圖1-1 Microsoft visual Studio 啟動子菜單
在需要使用Visual C++時,隻需從桌面上順序選擇“開始”程式 “Microsoft visual Studio”
Visual C++6.0指令即可,此時螢幕上在短暫顯示VisualC++6.0的版權頁面後,出現Visual
C++6.0的由視窗、工具條、菜單、工具及其他部分組成的一個主界面。通過這個界面,用
戶可以建立、測試、調試應用程式。如圖
圖1-2 Visual C++6.0界面
1.2.3 常用功能鍵及其意義
為了使程式員能夠友善快捷地完成程式開發,開發環境提供了大量快捷方式來簡化一些
常用操作的步驟。鍵盤操作直接、簡單,而且非常友善,因而程式員非常喜歡采用鍵盤指令
來控制操作。下面是一些最常用的功能鍵,希望在實驗中逐漸掌握。
操作類型 功能鍵 對應菜單 含義
檔案操作 Ctrl+N File|New 建立新的檔案、項目等
Ctrl+O File|Open 打開項目、檔案等
Ctrl+S File|Save 儲存目前檔案
編輯操作 Ctrl+X Edit|Cut 剪切
Ctrl+C Edit|Copy 複制
Ctrl+V Edit|Paste 粘貼
Ctrl+Z Edit|Undo 撤消上一個操作
Ctrl+Y Edit|Redo 重複上一個操作
Ctrl+A Edit|Select All 全選
Del Edit|Del 删除光标後面的一個字元
建立程式操作 Ctrl+F7 Build| Compiler current file 編譯目前源檔案
Ctrl+F5 Build|Run exe 運作目前項目
3
F7 Build|Build exe 建立可執行程式
F5 Build|Start Debugging 啟動調試程式
調試 F5 Debug|Go 繼續運作
F11 Debug|Step into 進入函數體内部
shift+F11 Debug|Step out 從函數體内部運作出來
F10 Debug|Step over 執行一行語句
F9 設定/清除斷點
Ctrl+F10 Debug|Run to cursor 運作到光标所在位置
shift+F9 Debug|QuickWatch 快速檢視變量或表達式的值
Shift + F5 Debug|Stop debugging 停止調試
注:這些快捷鍵指令都有對應的菜單和工具條按鈕,如圖1.3:
圖1-3 快捷鍵指令菜單與按鈕
1.2.4 輸入和編輯源程式
先介紹最簡單的情況,即程式隻由一個源程式檔案組成,即單檔案程式(有關對多檔案
程式的操作在本章的稍後介紹)。
1、建立一個C++源程式的方法
如果要建立一個C++源程式,可采取以下的步驟:
在Visual C++主視窗的主菜單欄中選擇File(檔案)指令,然後選擇New(建立)指令,如
圖1-4。
圖1-4 選擇File菜單中的New操作
Compile
(Ctrl+F7)
Rebuild All
Build (F7)
StopBuild
(Ctrl+Break)
Execute Program
(Ctrl+F5
Go(F5
Insert Remove
Breakpoint(F9)
4
圖1-5 建立一個C++源檔案
這時,展幕上出現一個New(建立)對話框,單擊此對話框的上方的Files(檔案)屬
性頁,在清單中選擇“C++ Source File”項,表示要建立新的C++源程式檔案,然後在對話
框右半部分的Location(目錄)文本框中輸入準備編輯的源程式檔案的存儲路徑(假設為
D:\ 實驗一),表示将要把準備編輯的源程式檔案将存放在
張三\實驗一”子目錄下。在其上方的File(檔案)文本框中輸入準備編輯的源程
序檔案的名字(輸入MyFirstCpp.cpp),如圖1-5。這樣,即将進行輸入和編輯的源程式就
以MyFirstCpp.cpp 為檔案名存放在D盤的“ \ 計算機 張三\實驗一”目錄下,如
圖1-6。當然,讀者完全可以指定其他路徑名和檔案名。
圖1-6 C++檔案建立成功
在單擊OK按鈕後,回到Visual C++主視窗,由于在前面已指定了路徑(D:\計算機
\實驗一)和檔案名(MyFirstCpp.cpp),是以在視窗的标題欄中顯示出
MyFirstC.cpp。可以看到光标在程式編輯視窗閃爍,表示程式編輯視窗已激活,可以輸入和
編輯源程式了。這裡輸入如圖1-7視窗中所示的程式。檢查無誤後,則将源程式儲存在前面
指定的檔案中,方法是:在主菜單欄中選擇File(檔案)指令,并在其下拉菜單中選擇Save
(儲存)指令。也可以用快捷鍵Ctrl+S來儲存檔案。如果不想将源程式存放到原先指定的
檔案中,可以不選擇Save指令,而選擇Save As(另存為)指令,并在彈出的Save As(另
存為)對話框中指定檔案路徑和檔案名。
計算機-4070105-張三\ “D:\ 計算機
-4070105--4070105-張三 -4070105-
5
圖1-7 C++程式輸入
2、打開一個已有的程式
如果你已經編輯并儲存過C++源程式,而希望打開你所需要的源程式檔案,并對它進行
修改,方法是:
(1)在“資料總管”或“我的電腦”中按路徑打到已有的C++程式名(如C1-1.cpp)。
(2)輕按兩下此檔案名,則進入Visual C++內建環境,并打開了該檔案,程式已顯示在編
輯視窗中。也可以用Ctrl+O或單擊工具欄中的小圖示 來打開檔案。
(3)如果修改後仍想儲存在原來的檔案中,可以選擇File(檔案)→Save(儲存)命
令,或用快捷鍵Ctrl+S,或單擊工具欄中的小圖示 來儲存檔案。
3、通過已有的程式建立一個新程式的方法
如果你已編輯并儲存過C++源程式(而不是第一次在該計算機上使用Visual C++)的話,
則可以通過一個已有的程式來建立一個新程式,這樣做比重新輸入一個新檔案省事,因為可
以利用原有程式的部分内容。方法是:
(1)打開任何一個已有的源檔案,(例cl-1.cpp)
(2)利用該檔案的基礎修改成新的檔案然後通過選擇File(檔案)→Save as(另存為)
指令将它以另一檔案名另存(如以test.cpp名字另存),這樣就生成了一個新檔案test.cpp。
用這種方法很友善,但應注意:
(1)儲存新檔案時,不要錯用File→Save(儲存)操作,否則原有檔案(cl-1.cpp)的
内容就被修改了。
(2)在編譯新檔案前,應先選擇File(檔案)→Close Workspace(關閉工作區)指令
将原有的工作區關閉,以免新檔案在原有的工作區進行編譯。
1.2.5 編譯、連接配接和運作
1、程式的編譯
在編輯和儲存了源檔案以後,需要對該源檔案進行編譯。單擊主菜單欄中的Build(編
譯),在其下拉菜單中選擇Compile MyFirstC.cpp(編譯MyFirstC.cpp)指令。由于建立(或
儲存)檔案時已指定了源檔案的名字MyFirstC.cpp,是以在Build菜單的Compile指令中顯
示了現在要編譯的源檔案名MyFirstC.cpp。見圖1-8:
6
圖1-8 編譯C++程式
在選擇“編譯”指令後,螢幕上出現一個對話框,内容是“This build command repuires
an active project workspace.Would you like to creat a default project workspace?”(此編譯指令要
求一個有效的項目工作區。你是否同意建立一個預設的項目工作區),見圖1-9。單擊Yes
(是)按鈕,表示同意由系統建立預設的項目工作區,然後開始編譯。也可以不用選擇菜單
的方法,而用Ctrl+F7或小圖示 來完成編譯。
圖1-9 建立預設工作區提示
在進行編譯時,編譯系統檢查源程式中有無文法錯誤,然後在主視窗下部的調試資訊窗
口輸出編譯的資訊,如果有錯,就會指出錯誤的位置和性質,見圖1-10。
7
圖1-10 編譯錯誤資訊提示
2、程式的調試
程式調試的任務是發現和改正程式中的錯誤,使程式能正常運作。編譯系統能檢查出程
序中的文法錯誤。文法錯誤分兩類:一類是緻命錯誤,以error表示,如果程式中有這類錯
誤,就通不過編譯,無法形成目标程式,更談不上運作了。另一類是輕微錯誤,以warning
(警告)表示,這類錯誤不影響生成目标程式和可執行程式,但有可能影響運作的結果。因
此也應當盡量改正,使程式既無error,又無warning。
在圖1-10中的調試資訊視窗中可以看到編譯的資訊,指出源程式有一個error 和一個
warning。第7行有緻命錯誤,錯誤的種類是:在“}”之前漏了“;”。檢查圖1-10中的程
序,果然發現在第6行末漏了分号。同學們可能要問:明明是第6行有錯,怎麼在報錯時說
成是第7行的錯呢?這是因為C++允許将一個語句分寫成幾行,是以檢查完第6行末尾無分
号時還不能判定該語句有錯,必須再檢查下一行,直到發現第7行的“}”前都沒有“;”,
才能判定出錯。是以在第7行報錯。在根據編譯報錯資訊檢查程式時,應檢查其上下行。此
外編譯資訊指出第7行還有一個warning,指出main函數需要有一個傳回值,程式中缺少一
個“return 0;”語句。
進行改錯時,輕按兩下調試資訊視窗中的某個報錯資訊的第1行,光标就自動移到程式視窗
中被報錯的程式行,并用粗箭頭指向該行。見圖1-11。
8
圖1-11 發現錯誤位置
在第6行末加上分号。再增加新的一行return 0; 如圖1-12:
圖1-12 錯誤修改
再選擇Compile MyFirstC.cpp指令重新編譯,此時編譯資訊提示:“0 error(s),0
warning(s)”,即沒有緻使錯誤(error)和警告性錯誤(warning),編譯成功,這時産生一個
MyFirstC.obj檔案。見圖1-13中的下部調試資訊視窗。
9
圖1-13 文法編譯通過
3、程式的連接配接
在得到目标程式後,就可以對程式進行連接配接了。此時應選擇Build(建構)→Build
MyFirstCpp.exe(建構 )指令,見圖1-14。表示要求連接配接并建立一個可執行檔案
。
圖1-14 連接配接建立可執行檔案
在執行連接配接後,在調試輸出視窗顯示連接配接時的資訊,說明沒有發現錯誤,生成了一個可
執行檔案 。見圖1-15。
MyFirstCpp.exe
10
圖1-15 可執行檔案建立成功
以上介紹的是分别進行程式的編譯與連接配接,也可以選擇Build→指令(或按F7鍵)一次
完成編譯與連接配接。對于初學者來說,還是建議分步進行程式的編譯與連接配接,有利于對程式編
譯、解釋、連接配接過程的了解。今後積累一定經驗後,可以一步完成編譯與連接配接。
4、程式的執行
在得到可執行檔案 後,就可以直接執行 了。選擇Build
→ (執行 )指令。見圖1-16。
圖1-16 運作程式可執行檔案
在選擇 指令後,即開始執行 。也可以不通過選擇菜
單指令,而且Ctrl+F5來實作程式的執行。程式執行後,螢幕切換到輸出結果的視窗,顯示
出運作結果,見圖1-17。
MyFirstCpp.exe MyFirstCpp.exe
!Execute MyFirstCpp.exe MyFirstCpp.exe
"!Execute MyFirstCpp.exe" MyFirstCpp.exe
11
圖1-17 程式運作結果
可以看到,在輸出結果的視窗中的第1行是程式的輸出結果:
This is a C++ program.
第2行“Press any key to continue”并非程式所指定的輸出,而是Visual C++在輸出完運
行結果後由Visual V++6.0系統自動加上的一行資訊,通知使用者“按任何一鍵以便繼續”。當
你按下任何一鍵後,輸出視窗消失,回到Visual C++的主視窗,你可以繼續對源程式進行修
改補充或進行其他工作。
如果已完成對一個程式的操作,不再對它進行其他處理,應當選擇File(檔案)→Close
Workspace(關閉視窗)指令,以結束對該程式的操作。
1.2.6 建立和運作包含多個檔案的程式的方法
上面介紹的是最簡單的情況,一個程式隻包含一個源程式檔案。如果一個程式包含多個
源程式檔案,則需要建立一個項目檔案(project file),在這個項目檔案中包含多個檔案(包
括源檔案和頭檔案)。項目檔案是放在項目工作區(Workspace)中并在項目工作區的管理之
下工作的,是以需要建立項目工作區,一個項目工作區可以包含一個以上的項目。在編譯時,
先分别對每個檔案進行編譯,然後将項目檔案中的檔案連接配接成為一個整體,再與系統的有關
資源連接配接,生成一個可執行檔案,最後執行這個檔案。
在實際操作時有兩種方法:一種是由使用者建立項目工作區和項目檔案;另一種是使用者隻
建立項目檔案而不建立項目工作區,由系統自動建立項目工作區。
1、由使用者建立項目工作區和項目檔案
(1)、先用前面介紹過的方法分别編輯好同一程式中的各個源程式檔案,并存放在自己
指定的目錄下,例如有一個程式包括filel.cpp和file2.cpp兩個源檔案,并已把它們儲存在“D:\
計算機-4070105-張三\實驗一”子目錄下。
(2)、建立一個項目工作區。在如圖1-4所示的Visual C++主視窗中選擇File(檔案)
→New(建立)指令,在彈出的New(建立)對話框中選擇上部的選擇屬性頁Workspace name
(工作區名字),表示要建立一個新的項目工作區。在對話框中右部Workspace name(工作
區名字)文本框中輸入你指定的工作區的名字(如wsl),見圖1-18。
12
圖1-18 建立工作區
然後單擊右下部的OK按鈕。此時傳回Visual C++主視窗,見圖1-19。
圖1-19 一個空的工作區
可以看到在左部的工作區視窗中顯示了“Workspace ws1:0 project(s)”,表示目前的工作
區名是wsl,其中有0個project(沒有在其中放入項目檔案)。
(3)、建立項目檔案。選擇File(檔案)→New(建立)指令,在彈出的New(建立)
對話框中選擇上部的選擇屬性頁Projects(項目,中文Visual C++把它譯為“工程”),表示
要建立一個項目檔案。見圖1-20。
13
圖1-20 建立一個新的項目
在對話框中左部的清單中選擇“Win32 Console Application”項,并在右部的location(位
置)文本框中輸入項目檔案的位置(即檔案路徑),在Project name(中文界面中顯示為“工
程”)文本框中輸入你指定的項目檔案名,假設輸入projectl。在視窗右部選中Add to current
workspace(添加至現有工作區)單選鈕,表示建立的項目檔案是放到剛才建立的目前工作
區中的。然後單擊OK(确定)按鈕。此時彈出一個如圖1-21所示的對話框,在其中選中
An empty project單選鈕,表示建立立的是一個空的項目。
圖1-21 項目類型選擇
單擊Finish(完成)按鈕。系統彈出一個New Project Information(建立工程資訊)對話
框(圖1-22),顯示了剛才建立的項目的有關資訊。
圖1-22 建立項目的資訊
在其下方可以看到項目檔案的位置(檔案路徑)。确認後單擊OK(确定)按鈕。此時
又回到Visual C++主視窗,可以看到:左部視窗中顯示了“Workspace’wsl’:1project(s)”
其下一行為“project1 files”,表示已将項目檔案project1加到項目工作區wsl中,見圖1-23。
14
圖1-23 工作區中加入一個新項目
(4)、将源程式檔案放到項目檔案中。方法是:在Visual C++主視窗中依次選擇Project
(工程)→Add To Project(添加到項目中,在中文界上顯示為“添加工程”)→“Files…”
指令,見圖1-24。
圖1-24 檔案加入到項目中
在選擇“Files…”指令後,螢幕上出現Insert Files into Project對話框。在上部的清單框
中按路徑找到源檔案file1.cpp和file2.cpp所在的子目錄,并選中file1.cpp和file2.cpp,見圖
1-25。
15
圖1-25 加入檔案選擇
單擊OK(确定)按鈕,就把這兩個檔案添加到項目檔案project1中了。
(5)、編譯和連接配接項目檔案。由于已經把file1.cpp和file2.cpp兩個檔案添加到項目檔案
project1中,是以隻須對項目檔案project1進行統一的編譯和連接配接。方法是:在Visua1 C++
主視窗中選擇Build(編譯)→Build project1.exe(建構project1.exe)指令。
在選擇Build project1.exe指令後,系統對整個項目檔案進行編譯和連接配接,在視窗的下部
會顯示編譯和連接配接的資訊。如果程式有錯,會顯示出錯資訊,如果無錯,會生成可執行檔案
project1.exe。見圖1-26。
圖1-26 項目的編譯和連接配接
執行可執行檔案。選擇Build(編譯)→Execute project1.exe(執行project1.exe)指令,
即可。
2、使用者隻建立項目檔案
上面介紹的方法是先建立項目工作區,再建立項目檔案,步驟比較多。可以采取簡化的
方法,即使用者隻建立項目檔案,而不建立項目工作區,由系統自動建立項目工作區。
在本方法中,保留上一節中介紹的第(1)、(4)、(5)、(6)步,取消第(2)步,修改
第(3)步。具體步聚如下:
(1)分别編輯好同一程式中的各個源程式檔案。同上一節中的第(1)步。
(2)建立一個項目檔案(不必先建立項目工作區)。
在Visual C++主視窗中選擇File(檔案)→New(建立)指令,在彈出的New(建立)
對話框中選擇上部的頁籤projects(項目),表示要建立一個項目檔案。見圖1-27。在對話
框中左部的清單中選擇“Win32 Console Application”項,在project name(中文Visual C++
16
中顯示為“工程”)文本框中輸入你指定的項目檔案名(project1)。可以看到:在右部的中
間的單選鈕處預設標明了Create new workspace(建立新工作區),這是由于使用者未指定工作
區,系統會自動開辟新工作區。
圖1-27 建立一個新的Win32 Console Application項目
單擊OK(确定)按鈕,出現“Win32 Console Application-step 1 of 1”對話框,選中右
部的An empty project單選鈕,單擊Finish(完成)按鈕後,出現“New project information”
(建立工程資訊)消息框。從它的下部可以看到項目檔案的路徑。單擊OK(确定)按鈕,
在彈出的Visual C++主視窗的左部視窗的下方單擊File View 按鈕,視窗中顯示
“Workspace`project1`:1 project(s)”,見圖1-28。說明系統已自動建立了一個工作區,由于
使用者未指定工作區名,系統就将項目檔案名project1同時作為工作區名。
圖1-28 建立新項目成功
向此項目檔案添加内容。步驟與方法一中的第(4)步相同。
編譯和連接配接項目檔案。步驟與方法一中的第(4)步相同。
執行可執行檔案。步驟與方法一中的第(6)步相同。
顯然,這種方法比前一種方法簡單一些。在介紹單檔案程式時,為了盡量簡化手續,這
裡沒有建立工作區,也沒有建立項目檔案,而是直接建立源檔案,實際上,在編譯每一個程
序時都需要一個工作區,如果使用者未指定,系統會自動建立工作區,并賦予它一個預設名(此
時以檔案名作為工作區名
17
1.3 Visual C++ 6.0工程相關檔案介紹
序号 檔案名 描述
1 *.dsw VC工作區檔案
2 *.dsp (Developer Studio Project)項目檔案,文本格式。不熟悉的話不要手工修改
3 *.ncb
無編譯浏覽檔案。當自動完成功能出問題時,可以删除此檔案,編譯工
程後會自動生成。
4 *.opt 工程關于開發環境的參數檔案,如VC工具條位置資訊等。
5 *.h C/C++程式頭檔案,可用文本編輯器打開
6 *.cpp C++源程式檔案,可用文本編輯器打開
7 *.exe 程式可執行檔案
8 *.plg
編譯資訊檔案。編譯時的error和warning資訊檔案(實際上是一個html
檔案),一般用處不大。在ToolsÆOptionsÆBuild裡面的選項可以控制這
個檔案的生成。
9 *.pch (Pre-Compiled File)是預編譯檔案。可以加快編譯速度,但是檔案非常大
10 *.pdb
(Program Database)記錄了程式有關的一些資料和調試資訊,在調試的時
候有用
11 *. obj 源程式檔案的目标檔案,編譯後生成
12 *. ilk 源程式檔案的連接配接檔案,連接配接後生成
注
在VC下建立一個工程後,會自動産生1~4類型的檔案。加入*.h、
*.cpp檔案編譯後産生7~12類型的檔案。其中8~12類型的檔案位于工程
目錄下的Debug目錄下。
1-4類型的檔案都是工程相關的檔案,一般不要删除,因為删除後,
必須手動的重建立立工程(1.2.6 較長的描述了如何建立一個工程)。對于大
型項目來說,删除這些檔案的後果很嚴重。
5~6類型的檔案還有什麼可說的,不僅不能删除這些檔案,還要備份
這些檔案。失去這些檔案是災難性的。
7~12類型的所有檔案都是可以删除的,因為再次編譯連接配接運作程式
時,會再次自動生成這些檔案。
1.4 Visual C++ 6.0錯誤資訊
1.4.1 程式錯誤的類型
1、嚴重錯誤(fatal error)
很少出現,通常是内部編譯器出錯。造成編譯立即停止。
2、文法錯誤(error)
文法錯誤是指源程式中存在不符合C/C++語言文法規定的語句,例如将int寫成Int,括
号不比對等。這些錯誤不改正是不能通過編譯的。如圖1-29
18
圖1-29 文法錯誤
3、警告錯誤(warning)
對于一些在文法上有輕微毛病但不影響程式運作的錯誤(如定義了變量但始終未使用),
編譯時會發出警告資訊,雖然程式能通過編譯、連接配接、運作,但警告類的錯誤常常帶來程式
非法操作、運作錯誤等問題。是以,盡量改正警告錯誤。如圖1-30
圖1-30 警告錯誤
4、連接配接錯誤(Link error)
程式文法上沒有問題,但是在連接配接時出現錯誤。這類問題常常是因為程式依賴函數、庫
不比對造成的。如圖1-31
圖1-31 連接配接錯誤
5、邏輯錯誤
邏輯錯誤是指程式無文法錯誤,也能正常運作,但結果不對。這類錯誤常常是設計算法
時的錯誤,計算機無法檢查出來。邏輯錯誤是最難改正的錯誤之一,引起錯誤的原因往往可
能很不起眼,比如就是一個變量沒有初始化等,是以改正這類錯誤常常需要投入大量的精力。
6、運作錯誤
有時程式既無文法和邏輯錯誤,但是程式就是不能正常運作。多數情況下是輸入資料和
程式要求的資料不比對造成的,也可能是系統的支援問題。
在C++中,文法、連接配接錯誤相對較為容易改正。而邏輯錯誤是最隐蔽的錯誤,比較難以
改正。運作錯誤則主要是在程式強壯性、相容性上可能存在問題,可以通過提高程式的适應
能力來修正。而最容易讓程式開發人員忽略的就是警告錯誤了,因為警告錯誤不一定會影響
程式的運作,但是正是這種不确定性也傳遞給了程式的執行,你不知道程式什麼時候會出問
題,也許永遠不會有問題,也許問題馬上出現,也許問題n年後出現,誰知道。是以,一定
要重視警告錯誤。
表1-1是C++錯誤的字首描述,在遇到錯誤時可以根據其字首就知道錯誤等級了。
錯誤等級 錯誤字首 錯誤編号範圍 示例
嚴重錯誤C1 001~999
編譯錯誤C2 001~999
C2065: The specified identifier was not
declared.(辨別符,比如一個變量,未申明)。
如圖1-29,coutt沒有申明過。
19
警告錯誤C4 001~999
C4101: 'main' : unreferenced local variable
(局部變量申明後從未使用過)。如圖1-30,
其中的i變量從未使用過。
連結錯誤LNK 1000~6026
LNK2001: unresolved external symbol
"symbol". (連接配接指定的函數或庫異常)。如
圖1-31,程式找不到main函數。
1.4.2 錯誤資訊的查詢
隻有詳細地了解了錯誤的原因,才能正确地改正錯誤。Microsoft的MSDN Library
(Microsoft開發幫助文檔庫,如圖1-32)提供了查詢錯誤資訊的功能。對于遇到的不明白
的錯誤,同學們應該學習使用MSDN幫助文檔庫進行錯誤資訊查詢,獲得錯誤資訊的解釋
和可能的改正方法。具體方法如下:
(1)選擇MSDN Library(如圖1-32)的索引屬性頁,在“鍵入要查找的關鍵字:”中
輸入錯誤号(由錯誤字首和編号組成),比如輸入C2065,如圖1-33所示。
圖1-32 MSDN Library
(2)、在索引清單框中輕按兩下選擇比對的錯誤後,錯誤類型、可能原因、改正方法等資訊
則顯示在視窗的右邊部分。如圖1-33所示:
20
圖1-33 在MSDN Library中查找錯誤資訊
1.5 Visual C++ 6.0調試工具使用
在開發程式的過程中,需要不斷地調試自己的程式,或檢查錯誤,或測試程式的穩定性,
這就需要借助調試工具來進行。選擇一個好的調試工具并能夠熟練地使用它,将會使程式開
發變得更加容易,進而大大提高程式開發的效率。
目前有許多調試工具,內建在Visual C++中的調試工具便具有相當強大的功能。
1.5.1 設定工程的調試屬性
在Visual C++中建立一個工程(Project)時,Visual C++都會自動建立一個Debug目錄,
在該目錄下存放在開發過程進行調試時生成的檔案以及生成的可執行檔案(不同類型檔案的
解釋見1.3節Visual C++ 6.0工程相關檔案介紹),不妨将此時生成的可執行檔案稱為Debug
版本。在Debug 版本當中,包含着Microsoft格式的調試資訊,而且不進行任何代碼優化。
一般情況下,在程式的開發過程中使用Debug模式。
在應用程式開發完成之後,要将程式發行時,需要編譯形成另一種版本的可執行檔案,
稱為Release版本,在Release版本中對可執行程式的二進制代碼進行了優化,其中不包含
任何的調試資訊。要建立Release版本的可執行檔案,可以選擇菜單Project中的Setting命
令,這時螢幕上面彈出Project Settings對話框,如圖1-34所示。在Settings For下拉清單中
選擇Release,按OK按鈕退出。
如果要在Visual C++中調試程式,則工程的應設為Debug版本。一般Visual C++建立一
個工程(Project)時,預設采用Debug版本。
21
圖1-34 設定工程的調試屬性
1.5.2 學習設定斷點進行單步調試
通常,一個應用程式是連續運作的,但是在程式調試的過程中,往往需要在程式的運作
過程的某一階段來觀測應用程式的狀态,是以必須使程式在某一地點停下來。在Visual C++
中,可以通過設定斷點來達到這樣的目的。在設定好斷點之後,當程式運作到設立斷點處時
就停止運作,此時就可以利用各種工具來觀察程式的狀态,也可以設定各種條件使程式按要
求繼續運作,這樣就可以進一步觀測程式的流向。
在Visual C++中,可以設定多種類型的斷點,這些斷點起作用的方式各不相同,可以将
它們分為三類,即:位置斷點、邏輯斷點以及與Windows消息有關的斷點。下面我們隻介
紹簡機關置斷點的設定方法,其它進階斷點的設定可以在今後進一步學習中掌握。
1、設定位置斷點
位置斷點,這是一類最簡單的斷點類型,其設定方法也最為簡單,隻要把光标移到要設
斷點的位置(當然這一行必須包含一條有效語句);然後按工具條上的add/remove breakpoint
按鈕或按快捷鍵F9;如圖1-35:
圖1-35 設定斷點按鈕
這時将會在螢幕上看到在這一行的左邊出現一個紅色的圓點,表示在該位置設立了一個
斷點,如圖1-36所示。如果你想取消斷點,将光标移動到設定斷點的代碼行,按F9。
22
圖1-36 設定一個斷點
2、啟動調試
按F5或者在Build菜單中,選擇Start Debug然後選擇Go,就可以啟動調試程式。程式
會一直運作到需要使用者輸入或者有斷點的代碼處。如圖1-37處的小黃箭頭,表明程式運作
到該處停止下來,等待下一步調試指令。
圖1-37 啟動調試
3、檢視變量值
檢視變量值有多種方式,你可以選擇你喜歡的方式進行。
(1)你可以将滑鼠移動到程式的變量名處,系統會自動為你顯示變量的值;
23
(2)複雜變量(如對象)可以通過QuickWatch檢視,方法是:将光标定位到所要檢視值
的變量處,按滑鼠右鍵,選擇QuickWatch菜單,就可以看到變量值。
(3)啟動調試程式後,螢幕下方将會出現兩個輸出視窗,一個是Watch,另一個是Variable。
Watch視窗顯示變量名和變量值,你可以在Watch視窗中加上你想觀察值的變量名,也可以
直接從源代碼中選擇變量名,并把它拖動到Watch視窗中。Variable視窗顯示程式目前運作
上下文涉及的變量的值。 如圖1-38:
圖1-38 檢視變量資料
4、控制程式執行
你可以控制程式單步執行(F10)、跟蹤到一個函數内部(F11)、從一個函數運作出來
(shift+F11)、運作到光标所在位置(Ctrl+F10),以便友善地調試程式。這些指令用于在某
個局部範圍詳細地調試程式。你也可以通過設定斷點(F9)然後用直接運作(GO或者F5)
來控制程式直接運作到斷點位置。如果你設定了多個斷點,程式将會在遇到的第一個斷點處
停下來。要從斷點處繼續運作,可以用上面所說的各種指令(F5,F10,F11,Shift+F11,
Ctrl+F10)。
圖1-39 調試控制工具條
5、結束調試
要結束調試,可以按shift+F5或者選擇菜單Debug|Stop Debugging。當結束調試後,所
有調試視窗會自動關閉,Debug菜單也會自動還原為Build菜單。