使用高級語言編程時,我們通常使用一個集成開發(fā)環(huán)境(Integrated Developing Enviroment,簡稱IDE)來進行編輯、編譯、運行和調試工作。對于 C 和 C++ 語言,常用的集成開發(fā)環(huán)境有:很早的 Turbo C 和 Turbo C++(這兩個太舊了,不推薦使用)、復雜而龐大的Microsoft Visual Studio(有6.0,7.1,2003,2005,2008,2013,2015等多個版本),免費而簡潔的 Dev-C++ 和 Code::Block 等等。在此簡要介紹 Dev-C++ 的安裝和使用方法。
1、安裝與啟動
Dev-C++ (有時候也稱為 Dev-Cpp)是一個免費軟件,最早是由 BloodShed 公司開發(fā)的,在版本 4.9.2 之后該公司停止開發(fā)并開放源代碼。然后由 Orwell 接手進行維護,陸續(xù)開發(fā)了幾個版本,后來也有其他開發(fā)人員陸續(xù)參與開發(fā)維護并發(fā)布了一些分支版本。
建議讀者從 Dev-C++ 中文版網(wǎng)站(https://devcpp.gitee.io/)下載新版本(2020年9月):Dev-C++ 5.15中文版。
下載之后開始安裝。安裝過程很簡單,按照對話框的操作提示執(zhí)行即可,在此略過不敘。
安裝完畢之后,雙擊 Windows 桌面上的 Dev-C++ 圖標,以啟動Dev-C++。工作界面如下圖所示。編譯成功之后可以點擊工具欄上的“運行”按鈕,就可以運行程序。有時為了省事,可以直接點擊工具欄上的“編譯運行”按鈕。
界面上依次顯示有菜單欄和兩行工具欄。其中第1行工具欄是平時使用最多的,其各個按鈕的功能如下圖所示:
2、編輯功能
點擊工具欄上的“新建源代碼”按鈕(或者按快捷鍵 Ctrl+N),就可以新建一個空白的源代碼文件,并開始編寫程序了。
點擊工具欄上的“打開”按鈕(或按快捷鍵 Ctrl+O),就可以打開一個原有的源代碼文件或工程文件,進行編輯。
點擊工具欄上的“保存”按鈕(快捷鍵 Ctrl+S),即可保存當前編輯的文件,默認文件擴展名為“.cpp”。需要注意的是,默認情況下每次保存文件時,Dev-C++ 都會自動對當前文件按照基本書寫規(guī)范進行格式化(整理文件中的空行、空格、括號和縮進)。
點擊工具欄上的“關閉”按鈕,即可關閉當前編輯的文件。
在 Dev-C++ 中編輯文件時,基本操作與其它文本編輯器是完全相同的。不過,除了基本的文本編輯功能之外,Dev-C++還提供了以下一些用于程序編輯的方便功能:
(1)點擊“插入片段”按鈕,可以插入一些常用的代碼片段。建議用戶在編輯每個源文件時,可以插入“文件頭注釋塊”和“C++ main”,以快速開始編輯工作。
(2)編輯區(qū)左邊的行號區(qū)中顯示了代碼中的塊狀結構,可供用戶看出代碼中的復合語句層次。
(3)編輯窗口左邊的“符號和類”窗格中顯示了當前程序中定義的函數(shù)、全局變量、結構體和類等信息,方便用戶掌握整個程序的結構。
例如,某個編輯狀態(tài)如下:
3、編譯與運行
程序編寫完畢,就可以進行編譯了。
首先要設置編譯器。 點擊Dev-C++工具欄上的“編譯器配置”下拉框,就可以看到多種編譯器的配置方案并從中選擇。 Dev-C++ 默認安裝的編譯器是 TDM-GCC 9.2.0(這是一個免費開源的C/C++編譯器)。選擇時主要是考慮兩個因素:1、根據(jù)自己所安裝的Windows系統(tǒng)是 64 位還是 32 位而選擇含有“64位”或“32位”的配置方案;2、在準備進行調試時只能選擇含有“調試”的方案,只有對于大型程序才需要改用含有“性能分析”和“發(fā)行”的方案。
對于大部分用戶來說,使用默認的“TDM-GCC 9.2.0 32位 調試”方案即可。
程序編寫完成之后,點擊工具欄上的“編譯”按鈕,就可以開始編譯,稍等片刻就會完成編譯。如果編譯出錯,則在編輯器下方顯示出編譯信息面板,其中列出了編輯過程中的出錯信息(Dev-C++ 自動地把出錯信息翻譯成了中文!)。用戶需要根據(jù)出錯信息對程序進行修改。(常見編譯錯誤解析)編譯成功之后可以點擊工具欄上的“運行”按鈕,就可以運行程序。有時為了省事,可以直接點擊工具欄上的“編譯運行”按鈕。
4、Dev-C++ 中的程序調試方法
編譯時可以檢查出源代碼中的語法錯誤,但是檢查不出源代碼中的邏輯錯誤。有時候程序雖然能夠編譯并運行,但是運行結果卻不是預想的結果,那就是因為源代碼中存在有邏輯錯誤。
要想清除程序中的邏輯錯誤,就必須學會使用開發(fā)環(huán)境中的調試工具,并觀察變量的數(shù)值變化,加上自己的邏輯思考,才能找出程序中的錯誤所在并修改清除之。
Dev-C++提供了強大的排錯與調試工具,下面簡要介紹具體使用方法。
在使用調試功能之前,請注意應該選擇含用“調試”的編譯器配置方案(見上一節(jié)的說明)。
Dev-C++ 沒有單獨的“調試”菜單,只是在“運行[R]”菜單下面有幾個菜單項與調試有關:“切換斷點 F4”、“調試 F5”、“停止運行 F6”。同時在工具欄上有 “調試 F5”、“停止運行 F6”按鈕。讀者需要了解這幾個菜單和按鈕,然后按下述步驟進行操作。
1.開始調試(Debug)
點擊工具欄上的“調試”按鈕(快捷鍵 F5),或點擊菜單“運行 –> 調試 F5”即可開始調試。
如果當前選定的編譯器配置方案中不含有調試信息,Dev-C++ 會彈出對話框提示說沒有調試信息,不能啟動調試。請點擊“確定”按鈕,然后重新選擇帶有“調試”的編譯器配置方案,再重新進行編譯和調試。
程序調試時,就開始運行(通常會彈出一個終端窗口)。運行到到程序中的第1條可執(zhí)行語句就暫停。這時候醉好是手工調整一下 Dev-C++ 窗口的大小和位置,以便能夠同時看到 Dev-C++ 窗口和終端窗口(以方便后續(xù)操作)。
2. 調試過程中的操作
啟動調試之后, Dev-C++ 窗口下半部分時會自動顯示調試面板(下圖),可以用鼠標點擊按鈕或按快捷鍵執(zhí)行調試操作。其中重要的是“下一行”按鈕(F7)和“單步進入”按鈕(F8)。在簡單的只含有一個 main 函數(shù)的程序中,這兩個按鈕的功能是相同的,沒有區(qū)別。而在含有多個自定義函數(shù)的程序中,這兩個功能有較大的區(qū)別:“下一步(F7)”是指把當前語句作為一步執(zhí)行完畢,而“單步進入(F8)”是指如果當前語句中含有函數(shù)調用則追蹤進入到函數(shù)中去執(zhí)行。
如果調用函數(shù)是標準函數(shù)或你認為無誤的函數(shù),就用“下一步”執(zhí)行(以免追蹤進入),對于懷疑有問題的函數(shù)才用“單步進入”去追蹤。如果一不小心進入了標準函數(shù)(例如 printf 函數(shù)或“cout << endl;”輸出),則點擊“跳出函數(shù)”以返回。
(一個常見問題:有時候在 Dev-C++ 中調試 C++ 程序時,遇到形如“cout << endl;”這樣的語句就會卡住無法繼續(xù)。這時請停止調試,然后點擊菜單“工具”下的“編譯選項”,在當前選定的編譯器配置方案下,在“代碼生成/優(yōu)化”下的“代碼優(yōu)化”標簽頁中,為“優(yōu)化級別(-O)”選擇一個合理的值,例如“Debug(g)”或“Med”都可以。確定。然后再重新編譯和調試。)
3. 查看變量的值
開始調試后,常常有必要查看變量的變化情況,因此需要查看變量的值。在默認情況下,如果用鼠標懸浮在當前運行的代碼中的變量上方,則會自動出現(xiàn)一個小懸浮窗口,顯示出該變量當前的值。
如果想更快速地看到變量的值,可以在編輯器中選中待查看的變量名,在 Dev-C++ 窗口下方的調試面板中點擊“添加查看”按鈕,就可以在 Dev-C++ 窗口左邊的“調試”窗格中看到該變量及其當前的值。(如果未選中變量名而點擊該按鈕,就會彈出對話框讓用戶輸入待查看的變量名)
4.設置斷點(Break point)
如果程序比較長,那么在調試過程中使用“下一步”按鈕(F7)和“單步進入”按鈕(F8)進行操作時比較慢??梢栽诔绦蛑性O置斷點,加快調試操作速度。
在事先對程序的運行出錯現(xiàn)象進行思考之后,可以推斷出程序出錯的可能原因在于源代碼中的哪些語句。無論是在編輯狀態(tài)還是在調試過程中,可以把光標移動到想要暫停執(zhí)行的那一行,用鼠標點擊該行左邊的裝訂區(qū)位置中的行號(或者按 F4 鍵),該行就會變成紅色,裝訂區(qū)的行號處顯示有一個紅點,表示該行已被設置為一個斷點。再次操作則取消該行為斷點。
請在自己懷疑有問題的部分前后設置幾個斷點,以便進行調試。程序中可以設置多個斷點。
如果程序中設置了斷點,那么在啟動調試時會直接運行到第1個斷點(而不是第1條可執(zhí)行語句)暫停。這時仍然可以用“下一步”按鈕(F7)和“單步進入”按鈕(F8)進行操作。如果認為程序中某一部分無誤,則點擊“繼續(xù)”按鈕就會以運行到下一個斷點暫停,無斷點則運行到程序末尾。
5.根據(jù)調試情況排錯
在調試過程中,要靈活運用“下一步”(F7)和“單步進入”(F8),并隨時查看變量的值,然而在頭腦中進行分析,從而判斷程序中是否存在邏輯錯誤。
在調試中途或醉后需要按“停止執(zhí)行”(F6)以結束調試。然后根據(jù)調試過程中的思考結果對程序進行修改。通常需要反復進行調試和修改才能排除程序中的錯誤。
以上就是對 Dev-C++ 的功能簡要介紹。讀者也可以閱讀 Dev-C++ 的詳細用戶手冊(英文)。
下面是簡單地介紹相關示例程序和項目開發(fā)功能。
示例程序
在 Dev-C++ 安裝目錄下的 Example 目錄下提供了一些示例程序,可供初學者參考學習:
hello.c 和 hello.cpp :經(jīng)典的輸出“Hello, World!”字符串的簡單程序。分別為 C 語言版本和 C++ 版本。
leapyear.c 和 leapyear.cpp :輸入一個表示年份的數(shù)字,判斷是否閏年。分別為 C 語言版本和 C++ 版本。
perfectnum.cpp :輸入一個整數(shù),檢查它是否為完數(shù)(所有真因數(shù)之和正好等于這個數(shù))。
fibonacci.cpp :輸出 Fibonacci 數(shù)列的前 30 項,用數(shù)組方式實現(xiàn)。
winmain.cpp :通過使用 Windows API(應用程序接口) 函數(shù)編寫的點擊按鈕之后彈出對話框輸出“Hello, Windows!”。
snakegame.cpp :字符界面的貪吃蛇游戲(主要是標準 C 語言實現(xiàn)的,少量地使用了 Windows API 函數(shù))。
EGE-FiveStarFlag.cpp :使用 EGE 圖形庫(一個面向初學者的免費開源函數(shù)庫)編寫的圖形界面程序,繪制五星紅旗。
EGE-RandomLines.cpp :使用 EGE 圖形庫編寫的圖形界面程序,隨機地繪制折向的線條,并以端點為圓心繪制圓形。
項目開發(fā)
Dev-C++ 不僅支持單文件開發(fā)(適合大部分初學者),還支持以項目形式的多文件開發(fā)。
點擊菜單“文件 > 新建... > 項目”,或點擊工具欄上的“新建...”按鈕再點擊“項目”,就可以打開“新建項目”對話框。該對話框中按照“基本”、“多媒體”、“Windows”和“終端窗口”四類提供了多種項目模板,可供用戶從中選擇合適的項目模板,開始自己的項目開發(fā)。例如,在“基本”類別中包含了“Windows應用程序”、“終端窗口應用程序”、“靜態(tài)庫”和“動態(tài)庫”等,而在“多媒體”類別下面提供了分別使用 Direct3D、EGE 和 OpenGL 三種圖形函數(shù)庫進行圖形編程的模板。
在使用項目方式進行多文件開發(fā)時,編輯窗口左邊的“項目”窗格提供了相應的項目組織功能。