用VC編程環(huán)境學習C語言簡介_第1頁
用VC編程環(huán)境學習C語言簡介_第2頁
用VC編程環(huán)境學習C語言簡介_第3頁
用VC編程環(huán)境學習C語言簡介_第4頁
用VC編程環(huán)境學習C語言簡介_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.PAGE :.;MicrosoftVisualC+6.0引見 從2021年4月開場,全國計算機等級考試將全面停頓Turbo C2.0簡稱TC軟件的運用,一切參與二級C言語、三級信息技術(shù)、網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫技術(shù)上機考試的考生,都要在Visual C+6.0(簡稱VC)環(huán)境下調(diào)試運轉(zhuǎn)C程序。眾所周知,VC軟件主要是用來開發(fā)C+程序的,如何在VC下調(diào)試運轉(zhuǎn)C程序,對于眾多學習者來說,確實是一個新的話題。VC與TC的差別,主要是表達在程序設(shè)計言語C+與C的關(guān)系上。其實,了解計算機程序設(shè)計的人都知道,C+是C言語的晉級板,VC是在Windows進展C+程序設(shè)計的主要軟件,VC完全兼容了C的功能,也就是說

2、,在VC下是完全可以進展C言語程序開發(fā)。Visual C+ 6.0編程環(huán)境的運用目 錄 TOC o 1-2 h z u HYPERLINK l _Toc244070294 1 編制并運轉(zhuǎn)一個簡單程序 PAGEREF _Toc244070294 h 1 HYPERLINK l _Toc244070295 1.1 編制并運轉(zhuǎn)程序的“四步曲 PAGEREF _Toc244070295 h 1 HYPERLINK l _Toc244070296 1.2 工程(Project)以及工程任務(wù)區(qū)(Project Workspace) PAGEREF _Toc244070296 h 1 HYPERLINK l

3、 _Toc244070297 1.3 啟動并進入VC6的集成開發(fā)環(huán)境 PAGEREF _Toc244070297 h 2 HYPERLINK l _Toc244070298 1.4 創(chuàng)建工程并輸入源程序代碼 PAGEREF _Toc244070298 h 3 HYPERLINK l _Toc244070299 1.5 不創(chuàng)建工程,直接輸入源程序代碼 PAGEREF _Toc244070299 h 7 HYPERLINK l _Toc244070300 1.6 編譯、鏈接而后運轉(zhuǎn)程序 PAGEREF _Toc244070300 h 7 HYPERLINK l _Toc244070301 1.7

4、及時備份本人的創(chuàng)作 PAGEREF _Toc244070301 h 8 HYPERLINK l _Toc244070302 1.8 將本人設(shè)計的產(chǎn)品提供應(yīng)他人運用 PAGEREF _Toc244070302 h 8 HYPERLINK l _Toc244070303 2 VC6集成開發(fā)環(huán)境運用參考 PAGEREF _Toc244070303 h 9 HYPERLINK l _Toc244070304 2.1 VC6的常用菜單命令項 PAGEREF _Toc244070304 h 9 HYPERLINK l _Toc244070305 2.2 VC6的主要任務(wù)窗口 PAGEREF _Toc244

5、070305 h 11 HYPERLINK l _Toc244070306 3 嚴謹思想,調(diào)試程序 PAGEREF _Toc244070306 h 13 HYPERLINK l _Toc244070307 3.1 什么時候需求對程序進展調(diào)試 PAGEREF _Toc244070307 h 13 HYPERLINK l _Toc244070308 3.2 對程序進展調(diào)試的根本手段和方法 PAGEREF _Toc244070308 h 13 HYPERLINK l _Toc244070309 3.3 對一個簡單程序的調(diào)試過程 PAGEREF _Toc244070309 h 15 HYPERLINK

6、 l _Toc244070310 3.4 設(shè)計適宜的程序調(diào)試方案 PAGEREF _Toc244070310 h 17 HYPERLINK l _Toc244070311 3.5 優(yōu)秀程序員的根本素質(zhì)豐富的想象、嚴謹?shù)乃枷?PAGEREF _Toc244070311 h 19 HYPERLINK l _Toc244070312 4 編譯與鏈接過程中常見的出錯提示 PAGEREF _Toc244070312 h 20 HYPERLINK l _Toc244070313 4.1 常見編譯錯誤 PAGEREF _Toc244070313 h 20 HYPERLINK l _Toc244070314

7、4.2 常見鏈接錯誤 PAGEREF _Toc244070314 h 231 編制并運轉(zhuǎn)一個簡單程序1.1 編制并運轉(zhuǎn)程序的“四步曲讓我們用VC6先來編制一個最簡單的程序,并讓它運轉(zhuǎn)(執(zhí)行)而得出結(jié)果,以此來作為了解VC6的開端。這個程序的功能僅僅是向屏幕上輸出一個字符串“Hello World。程序雖小,但與編制運轉(zhuǎn)大程序的整個過程是一樣的,都包含著如下所謂的“四步曲:(1)編輯(把程序代碼輸入,交給計算機)。(2)編譯(成目的程序文件.obj)。編譯就是把高級言語變成計算機可以識別的二進制言語,計算機只認識1和0,編譯程序把人們熟習的言語換成二進制的。編譯程序把一個源程序翻譯成目的程序的任

8、務(wù)過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優(yōu)化;目的代碼生成。主要是進展詞法分析和語法分析,又稱為源程序分析,分析過程中發(fā)現(xiàn)有語法錯誤,給出提示信息。 (3)鏈接(成可執(zhí)行程序文件.exe)。鏈接是將編譯產(chǎn)生的.obj文件和系統(tǒng)庫銜接裝配成一個可以執(zhí)行的程序。由于在實踐操作中可以直接點擊Build從源程序產(chǎn)生可執(zhí)行程序,能夠有人就會置疑:為何要將源程序翻譯成可執(zhí)行文件的過程分為編譯和鏈接兩個獨立的步驟,不是多此一舉嗎?之所以這樣做,主要是由于:在一個較大的復雜工程中,有很多人共同完成一個工程(每個人能夠承當其中一部分模塊),其中有的模塊能夠是用匯編言語寫的,有的模塊能

9、夠是用VC寫的,有的模塊能夠是用VB寫的,有的模塊能夠是購買(不是源程序模塊而是目的代碼)或已有的規(guī)范庫模塊,因此,各類源程序都需求先各自編譯成目的程序文件(二進制機器指令代碼),再經(jīng)過鏈接程序?qū)⑦@些目的程序文件銜接裝配成可執(zhí)行文件。(4)運轉(zhuǎn)(可執(zhí)行程序文件)。上述四個步驟中,其中第一步的編輯任務(wù)是最繁雜而又必需細致地由人工在計算機上來完成,其他幾個步驟那么相對簡單,根本上由計算機自動完成。1.2 工程(Project)以及工程任務(wù)區(qū)(Project Workspace)在開場編程之前,必需先了解工程Project(也稱“工程,或稱“工程工程)的概念。工程又稱為工程,它具有兩種含義,一種是指

10、最終生成的運用程序,另一種那么是為了創(chuàng)建這個運用程序所需的全部文件的集合,包括各種源程序、資源文件和文檔等等。絕大多數(shù)較新的開發(fā)工具都利用工程來對軟件開發(fā)過程進展管理。用VC6編寫并處置的任何程序都與工程有關(guān)(都要創(chuàng)建一個與其相關(guān)的工程),而每一個工程又總與一個工程任務(wù)區(qū)相關(guān)聯(lián)。任務(wù)區(qū)是對工程概念的擴展。一個工程的目的是生成一個運用程序,但很多大型軟件往往需求同時開發(fā)數(shù)個運用程序,VC開發(fā)環(huán)境允許用戶在一個任務(wù)區(qū)內(nèi)添加數(shù)個工程,其中有一個是活動的(缺省的),每個工程都可以獨立進展編譯、銜接和調(diào)試。實踐上,VC6是經(jīng)過工程任務(wù)區(qū)來組織工程及其各相關(guān)元素的,就好似是一個任務(wù)間(對應(yīng)于一個獨立的文件

11、夾,或稱子目錄),以后程序所牽扯到的一切的文件、資源等元素都將放入到這一任務(wù)間中,從而使得各個工程之間互不干擾,使編程任務(wù)更有條理,更具模塊化。最簡單情況下,一個任務(wù)區(qū)中用來存放一個工程,代表著某一個要進展處置的程序(我們先學習這種用法)。但假設(shè)需求,一個任務(wù)區(qū)中也可以用來存放多個工程,其中可以包含該工程的子工程或者與其有依賴關(guān)系的其他工程??煽闯?,工程任務(wù)區(qū)就像是一個“容器,由它來“盛放相關(guān)工程的一切有關(guān)信息,當創(chuàng)建新工程時,同時要創(chuàng)建這樣一個工程任務(wù)區(qū),而后那么經(jīng)過該任務(wù)區(qū)窗口來察看與存取此工程的各種元素及其有關(guān)信息。創(chuàng)建工程任務(wù)區(qū)之后,系統(tǒng)將創(chuàng)建出一個相應(yīng)的任務(wù)區(qū)文件(.dsw),用來存

12、放與該任務(wù)區(qū)相關(guān)的信息;另外還將創(chuàng)建出的其他幾個相關(guān)文件是:工程文件(.dsp)以及選擇信息文件(.opt)等。編制并處置C+程序時要創(chuàng)建工程,VC6曾經(jīng)預(yù)先為用戶預(yù)備好了近種不同的工程類型以供選擇,選定不同的類型意味著讓VC6系統(tǒng)幫著提早做某些不同的預(yù)備以及初始化任務(wù)(例如,事先為用戶自動生成一個所謂的底層程序框架或稱框架程序,并進展某些隱含設(shè)置,如隱含位置、預(yù)定義常量、輸出結(jié)果類型等)。工程類型中,其中有一個為“Win32 Console Application,它是我們首先要掌握的、用來編制運轉(zhuǎn)C+程序方法中最簡單的一種。此種類型的程序運轉(zhuǎn)時,將出現(xiàn)并運用一個類似于DOS的窗口,并提供對

13、字符方式的各種處置與支持。實踐上,提供的只是具有嚴厲的采用光標而不是鼠標挪動的界面。此種類型的工程小巧而簡單,但已足以處理并支持本課程中涉及到的一切編程內(nèi)容與技術(shù),使我們把重點放在程序的編制而并非界面處置等方面,至于VC6支持的其他工程類型(其中有許多還將涉及到Windows或其他的編程技術(shù)與知識),有待在今后的不斷學習中來逐漸了解、掌握與運用。1.3 啟動并進入VC6的集成開發(fā)環(huán)境圖1-1 VC6的集成開發(fā)環(huán)境窗口了解了工程及其上述普通概念后,如今就讓我們開場Visual C+ 6.0之旅吧!首先按如下兩種方法之一啟動并運轉(zhuǎn)VC6,進入到它的集成開發(fā)環(huán)境窗口(假設(shè)在Windows系統(tǒng)下曾經(jīng)安

14、裝了VC6),其詳細窗口式樣如圖1-1所示。方法一:假設(shè)桌面上有VC6圖標(“橫躺著即“倒下的“8字型圖標,且標有“Microsoft Visual Studio 6.0字樣,如圖1-2所示),那么用鼠標雙擊該圖標。圖1-2 VC6在桌面上的快捷方式方法二(假設(shè)按照通常方式對VC6進展了安裝的話):經(jīng)過“開場“程序“Microsoft Visual Studio 6.0“Microsoft Visual C+ 6.0,單擊一下該菜單項。圖1-1式樣的窗口從大體上可分為四部分。上部:菜單和工具條;中左:任務(wù)區(qū)(workspace)視圖顯示窗口,這里將顯示處置過程中與工程相關(guān)的各種文件種類等信息;

15、中右:文檔內(nèi)容區(qū),是顯示和編輯程序文件的操作區(qū);下部:輸出(Output)窗口區(qū),程序調(diào)試過程中,進展編譯、鏈接、運轉(zhuǎn)時輸出的相關(guān)信息將在此處顯示。留意,由于系統(tǒng)的初始設(shè)置或者環(huán)境的某些不同,能夠他所啟動的VC6初始窗口式樣與圖1-1有所不同,也許會沒出現(xiàn)Workspace窗口或Output窗口,這時可經(jīng)過“ViewWorkspace菜單項選擇項的執(zhí)行,總可使中左處的任務(wù)區(qū)窗口顯現(xiàn)出來;而經(jīng)過“ViewOutput菜單項選擇項的執(zhí)行,又總可使下部的輸出區(qū)窗口得以顯現(xiàn)。當然,假設(shè)不想看到這兩個窗口,可以點擊相應(yīng)窗口的“x按鍵來封鎖窗口。1.4 創(chuàng)建工程并輸入源程序代碼為了把程序代碼輸入而交給計算

16、機,需求運用VC6的編輯器來完成。如前所述,首先要創(chuàng)建工程以及工程任務(wù)區(qū),而后才干輸入詳細程序完成所謂的“編輯任務(wù)(留意,該步任務(wù)在四步驟中最繁雜、而又必需細致地由人工來完成!)。圖1-3 新建一個名為Sample的工程(同時自動創(chuàng)建一任務(wù)區(qū))(1)新建一Win32 Console Application工程選擇菜單File下的New項,會出現(xiàn)一個選擇界面,在屬性頁中選擇Projects標簽后,會看到近20種的工程類型,我們只需選擇其中最簡單的一種:“Win32Console Application,而后往右上處的“Location文本框和“Project name文本框中填入工程相關(guān)信息所存

17、放的磁盤位置(目錄或文件夾位置)以及工程的名字,設(shè)置到此時的界面信息如圖1-3所示。在圖1-3中,“Location文本框中填入如“D:myDataVC6,這是假設(shè)他預(yù)備在D磁盤的myDataVC6文件夾即子目錄下存放與工程任務(wù)區(qū)相關(guān)的一切文件及其相關(guān)信息,當然也可經(jīng)過點擊其右部的“按鈕去選擇并指定這一文件夾即子目錄位置。“Project name文本框中填入如“Sample的工程名(留意,名字由他根據(jù)工程性質(zhì)確定,此時VC6會自動在其下的Location文本框中用該工程名“Sample為他建立一個同名子目錄,隨后的工程文件以及其他相關(guān)文件都將存放在這個目錄下)。選擇OK按鈕進入下一個選擇界面

18、。這個界面主要是訊問用戶想要構(gòu)成一個什么類型的工程,其界面如圖1-4所示。圖1-4 選擇創(chuàng)建一個什么樣的工程假設(shè)選擇“An empty project項將生成一個空的工程,工程內(nèi)不包括任何東西。假設(shè)選擇“A simple application項將生成包含一個空的main函數(shù)和一個空的頭文件的工程。選“AHello World!application項與選“A simple application項沒有什么本質(zhì)的區(qū)別,只是需求包含有顯示出“Hello World!字符串的輸出語句。選擇“An application that supports MFC項的話,可以利用VC6所提供的類庫來進展編程

19、。為了更清楚的看到編程的各個環(huán)節(jié),我們選擇“An empty project項,從一個空的工程來開場我們的任務(wù)。單擊Finish按鈕,這時VC6會為他生成一個小型報告,報告的內(nèi)容是剛剛一切選擇項的總結(jié),并且訊問他能否接受這些設(shè)置。假設(shè)接受選擇OK按鈕,否那么選擇Cancel按鈕。我們選OK從而可進入到真正的編程環(huán)境下了。界面情況如圖1-5所示。圖1-5 剛完成創(chuàng)建工程Sample的VC6集成開發(fā)環(huán)境窗口(2)在任務(wù)區(qū)窗口中查看工程的邏輯架構(gòu)留意屏幕中的Workspace窗口,該窗口中有兩個標簽,一個是ClassView,一個是FileView。ClassView中列出的是這個工程中所包含的一切

20、類的有關(guān)信息,當然我們的程序?qū)⒉簧婕暗筋?,這個標簽中如今是空空如也。點擊FileView標簽后,將看到這個工程所包含的一切文件信息。點擊“+圖標翻開一切的層次會發(fā)現(xiàn)有三個邏輯文件夾:Source Files文件夾中包含了工程中一切的源文件;Header Files文件夾中包含了工程中一切的頭文件;Resource Files文件夾中包含了工程中一切的資源文件。所謂資源就是工程中所用到的位圖,加速鍵等信息,在我們的編程中不會牽扯到這一部分內(nèi)容。如今FileView中也不包含任何東西。邏輯文件夾是邏輯上的,他們只是在工程的配置文件中定義的,在磁盤上并沒有物理地存在這三個文件夾。我們也可以刪除本人不

21、運用的邏輯文件夾;或者根據(jù)我們工程的需求,創(chuàng)建新的邏輯文件夾,來組織工程文件。這三個邏輯文件夾是VC預(yù)先定義的,就編寫簡單的單一源文件的C程序而言,我們只需求運用Source Files一個文件夾就夠了。 (3)在工程中新建C源程序文件并輸入源程序代碼下面該輪到生成一個“Hello.cpp的源程序文件,而后經(jīng)過編輯界面來輸入所需的源程序代碼。選擇菜單Project中子菜單Add To Project下的new項,在出現(xiàn)的對話框的Files標簽(選項卡)中,選擇“C+ Source File項,在右中處的File文本框中為將要生成的文件取一個名字,我們?nèi)∶麨镠ello(其他遵照系統(tǒng)隱含設(shè)置,此時

22、系統(tǒng)將運用Hello.cpp的文件來保管所鍵入的源程序),此時的界面情況如圖1-6所示。而后選擇OK按鈕,進入輸入源程序的編輯窗口(留意所出現(xiàn)的呈現(xiàn)“閃爍形狀的輸入位置光標),此時只需經(jīng)過鍵盤輸入他所需求的源程序代碼:#include void main()printf(Hello World!n);圖1-6 選擇在工程Sample中新建一名為Hello.cpp的C源程序文件可經(jīng)過Workspace窗口中的FileView標簽,看到Source Files文件夾下文件Hello.cpp曾經(jīng)被加了進去,此時的界面情況如圖1-7所示。圖1-7 在Hello.cpp輸入C源程序代碼實踐上,這時在Wo

23、rkspace窗口的ClassView標簽中的Globals文件夾下,也可以看到我們剛剛所鍵入的main函數(shù)。1.5 不創(chuàng)建工程,直接輸入源程序代碼不需求象前面描畫的那樣顯示地創(chuàng)新一個工程,對于新編寫一個程序,只需求在圖1-3所示的界面中,選“Files標簽,再選擇“C+ Source File,其界面與圖1-6類似(僅Add to projec是暗淡的、無法選擇),后續(xù)操作那么與前述一樣。最簡單的做法是:直接運用工具欄上的新建文件按鈕“新建一空白文件,緊接著單擊工具欄上的保管按鈕“保管此空文件留意,保管時一定要以“.c或“.cpp作為擴展名,否那么邏輯程序時自動格式化和特殊顯示等很多特性將無

24、法運用,程序無法被運轉(zhuǎn)。這種方式新建的C源程序文件在編譯時,會提示用戶,要求允許系統(tǒng)為其創(chuàng)新一個默許的工程(含相應(yīng)的任務(wù)區(qū))。1.6 編譯、鏈接而后運轉(zhuǎn)程序程序編制完成(即所謂“四步曲中第一步的編輯任務(wù)得以完成)之后,就可以進展后三步的編譯、鏈接與運轉(zhuǎn)了。一切后三步的命令項都處在菜單Build之中。留意,在對程序進展編譯、鏈接和運轉(zhuǎn)前,最好先保管本人的工程(運用“FileSave All菜單項)以防止程序運轉(zhuǎn)時系統(tǒng)發(fā)生不測而使本人之前的任務(wù)付之東流,應(yīng)讓這種做法成為本人的習慣、素質(zhì)。首先選擇執(zhí)行菜單第一項Compile,此時將對程序進展編譯。假設(shè)編譯中發(fā)現(xiàn)錯誤(error)或警告(warnin

25、g),將在Output窗口中顯示出它們所在的行以及詳細的出錯或警告信息,可以經(jīng)過這些信息的提示來糾正程序中的錯誤或警告(留意,錯誤是必需糾正的,否那么無法進展下一步的鏈接;而警告那么不然,它并不影響進展下一步,當然最好還是能把一切的警告也“消滅掉)。當沒有錯誤與警告出現(xiàn)時,Output窗口所顯示的最后一行應(yīng)該是:“Hello.obj-0 error(s), 0warning(s)。圖1-8 程序Hello.cpp的運轉(zhuǎn)結(jié)果界面編譯經(jīng)過后,可以選擇菜單的第二項Build來進展鏈接生成可執(zhí)行程序。在鏈接中出現(xiàn)的錯誤也將顯示到Output窗口中。鏈接勝利后,Output窗口所顯示的最后一行應(yīng)該是:“

26、Sample.exe-0 error(s), 0 warning(s)。最后就可以運轉(zhuǎn)(執(zhí)行)我們所編制的程序了,選擇Execute項(該選項前有一個深色的感慨號標志“!,實踐上也可經(jīng)過單擊窗口上部工具欄中的深色感慨號標志“!來啟動執(zhí)行該選項),VC6將運轉(zhuǎn)曾經(jīng)編好的程序,執(zhí)行后將出現(xiàn)一個結(jié)果界面(所謂的類似于DOS窗口的界面),如圖1-8所示,其中的“press any key to continue是由系統(tǒng)產(chǎn)生的,使得用戶可以閱讀輸出結(jié)果,直到按下了任一個鍵盤按鍵時為止(那時又將前往到集成界面的編輯窗口處)。至此我們曾經(jīng)生成并運轉(zhuǎn)(執(zhí)行)了一個完好的程序,完成了一個“回合的編程義務(wù)。此時應(yīng)

27、執(zhí)行“FileClose Workspace菜單項,待系統(tǒng)訊問能否封鎖一切的相關(guān)窗口時,回答“是,那么終了了一個程序從輸入到執(zhí)行的全過程,回到了剛剛啟動VC6的那一個初始畫面。1.7 及時備份本人的創(chuàng)作(1)完全備份。對于剛剛?cè)蝿?wù)的工程Sample而言,只需將D:myDataVC6下的文件夾Sample復制到U盤或打包成一個文件后放到本人的郵箱。需求在其它計算機上繼續(xù)完成該工程時,將該文件夾復制到該計算機的硬盤上,進入VC6,經(jīng)過“FileOpen Workspace菜單項將該工程翻開即可。(2)只備份C源程序文件。對于剛剛?cè)蝿?wù)的工程Sample而言,工程非常簡單,沒有什么專門的設(shè)置,因此,僅

28、備份其中的C源程序Hello.cpp就足矣。需求在其它計算機上繼續(xù)完成該程序時,只需將備份的程序復制到該計算機的硬盤上,進入VC6,根據(jù)前面的講述,新建一Win32 Console Application(做到圖1-5所示的界面),然后經(jīng)過“ProjectAdd to ProjectFiles菜單項將Hello.cpp添加新建的工程中。最簡單的做法是:直接運用工具欄上的文件翻開按鈕“翻開Hello.cpp。1.8 將本人設(shè)計的產(chǎn)品提供應(yīng)他人運用需求將本人設(shè)計的產(chǎn)品提供應(yīng)他人運用時,針對前述的Sample工程,只需將鏈接產(chǎn)生的可執(zhí)行文件Sample.exe復制/發(fā)送給他人即可,不能復制整個工程文

29、件夾或復制.cpp文件,這是由于:(1)復制可執(zhí)行文件已足夠。(2)復制整個工程文件夾或復制.cpp文件,等于提供了本人的詳細設(shè)計,在商業(yè)上普通是不這樣做了,除非事先雙方談妥需求這樣做或?qū)Ψ角樵赋龈邇r購買他的詳細設(shè)計。圖1-9 選擇生成什么類型的可執(zhí)行程序另外,該當闡明的是:前面所說的編譯、鏈接過程都是Debug類型的,也就是說,當VC6在進展這些任務(wù)時將參與一些調(diào)試信息,致使編譯鏈接后生成的代碼很龐大,效率也降低。假設(shè)確信他的程序曾經(jīng)完美無缺或者是要正式發(fā)布,就應(yīng)該選擇菜單Build中的Batch Build項,產(chǎn)生如圖1-9所示的對話框,其中的兩個選項分別代表編譯的代碼方式。假設(shè)選擇第一項

30、Release,那么生成的就是最終代碼,其運轉(zhuǎn)效率會增高。選擇Sample-Win32 Release項,再進展Build或Rebuild All就會在工程所在的目錄下產(chǎn)生一個新的目錄release,在release目錄下生成的可執(zhí)行程序代碼規(guī)模小,執(zhí)行效率高,是我們最后的產(chǎn)品。2 VC6集成開發(fā)環(huán)境運用參考2.1 VC6的常用菜單命令項(1)File菜單New:翻開“new對話框,以便創(chuàng)建新的文件、工程或任務(wù)區(qū)。Close Workspace:封鎖與任務(wù)區(qū)相關(guān)的一切窗口。Exit:退出VC6環(huán)境,將提示保管窗口內(nèi)容等。(2)Edit菜單Cut:快捷鍵Ctrl+X。將選定內(nèi)容復制到剪貼板,然后

31、再從當前活動窗口中刪除所選內(nèi)容。與“Paste結(jié)合運用可以挪動選定的內(nèi)容。Copy:快捷鍵Ctrl+C。將選定內(nèi)容復制到剪貼板,但不從當前活動窗口中刪除所選內(nèi)容。與“Paste結(jié)合運用可以復制選定的內(nèi)容。Paste:快捷鍵Ctrl+V。將剪貼板中的內(nèi)容插入(粘貼)到當前鼠標指針所在的位置。留意,必需先運用Cut或Copy使剪貼板中具有預(yù)備粘貼的內(nèi)容。Find:快捷鍵Ctrl+F。在當前文件中查找指定的字符串。順便指出,可按快捷鍵F3尋覓下一個匹配的字符串。Find in Files:在指定的多個文件中查找指定的字符串。Replace:快捷鍵Ctrl+H。交換指定的字符串(用某一個串交換另一個串

32、)。Go To: 快捷鍵Ctrl+G。將光標移到指定行上。Breakpoints:快捷鍵Alt+F9。彈出對話框,用于設(shè)置、刪除或查看程序中的一切斷點。斷點將通知調(diào)試器應(yīng)該在何時何地暫停程序的執(zhí)行,以便查看當時的變量取值等現(xiàn)場情況。(3)View菜單Workspace:假設(shè)任務(wù)區(qū)窗口沒顯示出來,選擇執(zhí)行該項后將顯示出任務(wù)區(qū)窗口。Output:假設(shè)輸出窗口沒顯示出來,選擇執(zhí)行該項后將顯示出輸出窗口。輸出窗口中將隨時顯示有關(guān)的提示信息或出錯警告信息等。(4)Project菜單Add To Project:選擇該項將彈出子菜單,用于添加文件或數(shù)據(jù)鏈接等到工程之中去。例如子菜單中的New選項可用于添加

33、“C+ Source File或“C/C+ Header File;而子菜單中的Files選項那么用于插入已有的文件到工程中。Settings:為工程進展各種不同的設(shè)置。中選擇其中的“Debug標簽(選項卡),并經(jīng)過在“Program arguments:文本框中填入以空格分割的各命令行參數(shù)后,那么可以為帶參數(shù)的main函數(shù)提供相應(yīng)參數(shù)(呼應(yīng)于“void main(int argc, char* argv )方式的main函數(shù)中所需各argv數(shù)組的各字符串參數(shù)值)。留意,在執(zhí)行帶參數(shù)的main函數(shù)之前,必需進展該設(shè)置,當“Program arguments:文本框中為空時,意味著無命令行參數(shù)。

34、(5)Build菜單Compile:快捷鍵Ctrl+F7。編譯當前處于源代碼窗口中的源程序文件,以便檢查能否有語法錯誤或警告,假設(shè)有的話,將顯示在Output輸出窗口中。Build:快捷鍵F7。對當前工程中的有關(guān)文件進展銜接,假設(shè)出現(xiàn)錯誤的話,也將顯示在Output輸出窗口中。Execute:快捷鍵Ctrl+F5。運轉(zhuǎn)(執(zhí)行)曾經(jīng)編譯、銜接勝利的可執(zhí)行程序(文件)。Start Debug:選擇該項將彈出子菜單,其中含有用于啟動調(diào)試器運轉(zhuǎn)的幾個選項。例如其中的Go選項用于從當前語句開場執(zhí)行程序,直到遇到斷點或遇到程序終了;Step Into選項開場單步執(zhí)行程序,并在遇到函數(shù)調(diào)用時進入函數(shù)內(nèi)部再從

35、頭單步執(zhí)行;Run to Cursor選項使程序運轉(zhuǎn)到當前鼠標光標所在行時暫停其執(zhí)行(留意,運用該選項前,要先將鼠標光標設(shè)置到某一個他希望暫停的程序行處)。執(zhí)行該菜單的選擇項后,就啟動了調(diào)試器,此時菜單欄中將出現(xiàn)Debug菜單(而取代了Build菜單)。(6)Debug菜單啟動調(diào)試器后才出現(xiàn)該Debug菜單(而不再出現(xiàn)Build菜單)。Go:快捷鍵F5。從當前語句啟動繼續(xù)運轉(zhuǎn)程序,直到遇到斷點或遇到程序終了而停頓(與BuildStart DebugGo選項的功能一樣)。Restart:快捷鍵Ctrl+Shift+F5。重新從頭開場對程序進展調(diào)試執(zhí)行(當對程序做過某些修正后往往需求這樣做!)。選

36、擇該項后,系統(tǒng)將重新裝載程序到內(nèi)存,并放棄一切變量的當前值(而重新開場)。Stop Debugging:快捷鍵Shift+F5。中斷當前的調(diào)試過程并前往正常的編輯形狀(留意,系統(tǒng)將自動封鎖調(diào)試器,并重新運用Build菜單來取代Debug菜單)。Step Into:快捷鍵F11。單步執(zhí)行程序,并在遇到函數(shù)調(diào)用語句時,進入那一函數(shù)內(nèi)部,并從頭單步執(zhí)行(與BuildStart DebugStep Into選項的功能一樣)。Step Over:快捷鍵F10。單步執(zhí)行程序,但當執(zhí)行到函數(shù)調(diào)用語句時,不進入那一函數(shù)內(nèi)部,而是一步直接執(zhí)行完該函數(shù)后,接著再執(zhí)行函數(shù)調(diào)用語句后面的語句。Step Out:快捷鍵

37、Shift+F11。與“Step Into配合運用,當執(zhí)行進入到函數(shù)內(nèi)部,單步執(zhí)行假設(shè)干步之后,假設(shè)發(fā)現(xiàn)不再需求進展單步伐試的話,經(jīng)過該選項可以從函數(shù)內(nèi)部前往(到函數(shù)調(diào)用語句的下一語句處停頓)。Run to Cursor:快捷鍵Ctrl+F10。使程序運轉(zhuǎn)到當前鼠標光標所在行時暫停其執(zhí)行(留意,運用該選項前,要先將鼠標光標設(shè)置到某一個他希望暫停的程序行處)?,F(xiàn)實上,相當于設(shè)置了一個暫時斷點,與BuildStart DebugRun to Cursor選項的功能一樣。Insert/Remove Breakpoint:快捷鍵F9。本菜單項并未出如今Debug菜單上(在工具欄和程序文檔的上下文關(guān)聯(lián)菜

38、單上),列在此處是為了方便大家掌握程序調(diào)試的手段,其功能是設(shè)置或取消固定斷點程序行前有一個圓形的黑點標志,表示曾經(jīng)該行設(shè)置了固定斷點。另外,與固定斷點相關(guān)的還有Alt+F9(管理程序中的一切斷點)、Ctrl+F9(禁用/使能當前斷點)。(7)Help菜單經(jīng)過該菜單來查看VC6的各種聯(lián)機協(xié)助 信息。(8)上下文關(guān)聯(lián)菜單除了主菜單和工具欄外,VC6開發(fā)環(huán)境還提供了大量的上下文關(guān)聯(lián)菜單,用鼠標右鍵的單擊窗口中很多地方都會彈出一個關(guān)聯(lián)菜單,里面包含有與被單擊工程相關(guān)的各種命令,建議大家在任務(wù)時可以試著多點點鼠標右鍵,說不定會發(fā)現(xiàn)很多有用的命令,從而大大加快一些常規(guī)操作的速度。2.2 VC6的主要任務(wù)窗

39、口(1)Workspace窗口Workspace窗口顯示了當前任務(wù)區(qū)中各個工程的類、資源和文件信息,當新建或翻開一個任務(wù)區(qū)后,Workspace窗口通常就會出現(xiàn)三個樹視圖:ClassView(類視圖)、ResourceView(資源視圖)和FileView(文件視圖),假設(shè)在VC6企業(yè)版中翻開了數(shù)據(jù)庫工程,還會出現(xiàn)第四個視圖DataView(數(shù)據(jù)視圖)。好像前面所述,在Workspace窗口的各個視圖內(nèi)單擊鼠標右鍵可以得到很多有用的關(guān)聯(lián)菜單。ClassView顯示當前任務(wù)區(qū)中一切工程定義的C+類、全局函數(shù)和全局變量,展開每一個類后,可以看到該類的一切成員函數(shù)和成員變量,假設(shè)雙擊類的名字,VC6

40、會自動翻開定義這個類的文件,并把文檔窗口定位到該類的定義處,假設(shè)雙擊類的成員或者全局函數(shù)及變量,文檔窗口那么會定位到相應(yīng)函數(shù)或變量的定義處。ResourceView顯示每個工程中定義的各種資源,包括快捷鍵、位圖、對話框、圖標、菜單、字符串資源、工具欄和版本信息,假設(shè)雙擊一個資源工程,VC6就會進入資源編輯形狀,翻開相應(yīng)的資源,并根據(jù)資源的類型自動顯示出Graphics、Color、Dialog、Controls等??渴酱翱?。FileView顯示了隸屬于每個工程的一切文件。除了C/C+源文件、頭文件和資源文件外,我們還可以向工程中添加其它類型的文件,例如Readme.txt等,這些文件對工程的編

41、譯銜接不是必需的,但未來制造安裝程序時會被一同打包。同樣,在FileView中雙擊源程序等文本文件時,VC6會自動為該文件翻開一個文檔窗口,雙擊資源文件時,VC6也會自動翻開其中包含的資源。在FileView中對著一個工程單擊鼠標右鍵后,關(guān)聯(lián)菜單中有一個“Clean命令,在此特別要解釋一下它的功能:VC6在建立(Build)一個工程時,會自動生成很多中間文件,例如預(yù)編譯頭文件、程序數(shù)據(jù)庫文件等,這些中間文件加起來的大小往往有數(shù)兆,很多人在開發(fā)一個軟件期間會運用辦公室或家里的數(shù)臺機器,假設(shè)不把這些中間文件刪除,在多臺機器之間運用軟盤拷貝工程就很費事?!癈lean命令的功能就是把VC6生成的中間文

42、件全部刪除,防止了手工刪除時能夠會出現(xiàn)誤刪或漏刪的問題。另外,在某些情況下,VC6編譯器能夠無法正確識別哪些文件已被編譯過了,以致于在每次建立工程時都進展完全重建,很浪費時間,此時運用“Clean命令刪除掉中間文件就可以處理這一問題。該當指出,承載一個工程的還是存儲在任務(wù)文件夾下的多個文件(物理上),在Workspace窗口中的這些視圖都是邏輯意義上的,它們只是從不同的角度去自動統(tǒng)計總結(jié)了工程的信息,以方便和協(xié)助 我們查看工程、更有效地開展任務(wù)。假設(shè)開場時他不習慣且工程很簡單(學習期間很多時候都只需一個.cpp文件),那么他完全沒有必要去搭理這些視圖,只需求在.cpp文件內(nèi)容窗口中任務(wù)。(2)

43、Output窗口與Workspace窗口一樣,Output窗口也被分成了數(shù)欄,其中前面4欄最常用。在建立工程時,Build欄將顯示工程在建立過程中經(jīng)過的每一個步驟及相應(yīng)信息,假設(shè)出現(xiàn)編譯銜接錯誤,那么發(fā)生錯誤的文件及行號、錯誤類型編號和描畫都會顯示在Build欄中,用鼠標雙擊一條編譯錯誤,VC6就會翻開相應(yīng)的文件,并自動定位到發(fā)生錯誤的那一條語句。工程經(jīng)過編譯銜接后,運轉(zhuǎn)其調(diào)試版本,Debug欄中會顯示出各種調(diào)試信息,包括DLL裝載情況、運轉(zhuǎn)時警告及錯誤信息、MFC類庫或程序輸出的調(diào)試信息、進程中止代碼等。兩個Find in Files欄用于顯示從多個文件中查找字符串后的結(jié)果,當他想看看某個函

44、數(shù)或變量出如今哪些文件中,可以從“Edit菜單中選擇“Find in Files命令,然后指定要查找的字符串、文件類型及途徑,按“查找后結(jié)果就會輸出在Output的Find in Files欄中。(3)窗口規(guī)劃調(diào)整VC6的界面允許用戶靈敏配置窗口規(guī)劃,例如菜單和工具欄的位置都可以重新定位。讓我們在菜單或工具欄左方類似于把手的兩個豎條紋處或其它空白處點擊鼠標左鍵并按住,然后試試把它拖動到窗口的不同地方,就可以發(fā)現(xiàn)菜單和工具欄可以停靠在窗口的上方、左方和下方,雙擊豎條紋后,它們還能以獨立子窗口的方式出現(xiàn),獨立子窗口可以一直浮動在文檔窗口的上方,并且可以被拖到VC6主窗口之外,假設(shè)有雙顯示器,甚至可

45、以把這些子窗口拖到另外一個顯示器上,以便進一步加大編輯區(qū)域的面積。Workspace和Output等??渴酱翱?Docking View)也能以一樣的方式進展拖動,或者切換成獨立的子窗口,此外,這些??渴酱翱谶€可以切換成普通的文檔窗口方式,不過文檔窗口不能被拖出VC6的主窗口,切換的方法是選中某個??渴酱翱诤?,在“Windows菜單中把“Docking View置于非選中形狀。3 嚴謹思想,調(diào)試程序3.1 什么時候需求對程序進展調(diào)試當程序編譯出錯或者鏈接出錯時,系統(tǒng)都將在Output輸出窗口中隨時顯示出有關(guān)的提示信息或出錯警告信息等(假設(shè)是編譯出錯,只需雙擊Output窗口中的出錯信息就可以自

46、動跳到出錯的程序行,以便仔細查找)。但假設(shè)編譯和鏈接都正確,而執(zhí)行結(jié)果又總是不正確時,這時就需求運用調(diào)試工具來幫著“偵查出程序中隱藏著的出錯位置(某種邏輯錯誤)。強調(diào):初學者常犯的錯誤是以為“編譯和鏈接都正確,程序就應(yīng)該沒有問題,怎樣會結(jié)果不對呢?“編譯和鏈接都正確,只能闡明程序沒有語法和拼寫上的錯誤,但在算法(邏輯)上有沒有錯,還得看結(jié)果對不對。反過來講,無論讓他設(shè)計一個什么樣的程序,他都只寫以下幾行,那么“編譯和鏈接一定都正確,但能實現(xiàn)設(shè)計的要求嗎?#include void main()printf(Hello World!n);現(xiàn)實上,程序設(shè)計的重點完全不是修正編譯和鏈接過程中的錯誤相

47、對而言,這種任務(wù)根本沒有技術(shù)含量,程序設(shè)計的主要任務(wù)是設(shè)計正確的算法。3.2 對程序進展調(diào)試的根本手段和方法(1)設(shè)置固定斷點或暫時斷點所謂斷點,是指定程序中的某一行,讓程序運轉(zhuǎn)至該行后暫停運轉(zhuǎn),使得程序員可以察看分析程序的運轉(zhuǎn)過程中的情況。這些情況普通包括:在變量窗口(Varibles)中察看程序中變量的當前值。程序員察看這些值的目的是與預(yù)期值對比,假設(shè)與預(yù)期值不一致,那么此斷點前運轉(zhuǎn)的程序一定在某個地方有問題,以此可減少缺點范圍。例如以下程序是計算cos(x)并顯示,運轉(zhuǎn)時發(fā)現(xiàn)無論x輸入為多少,結(jié)果都是0.046414。#include #include void main()int x;

48、printf(Please input x:);scanf(% d, &x);printf(cos(x)=%fn, cos(x);在該程序中,假設(shè)他沒有看到問題程序較長、較復雜時很難看出問題所在,那么應(yīng)該運用調(diào)試手段定位缺點位置。在監(jiān)控窗口(Watch)中察看指定變量或表達式的值。當變量較多時,運用Varibles窗口能夠不太方便,運用Watch窗口那么可以有目的、有方案地察看關(guān)鍵變量的變化。在輸出窗口中察看程序當前的輸出與預(yù)期能否一致。同樣地,假設(shè)不一致,那么此斷點前運轉(zhuǎn)的程序一定在某個地方有問題。在內(nèi)存窗口(Memory)中察看內(nèi)存中數(shù)據(jù)的變化。在該窗口中能直接查詢和修正恣意地址的數(shù)據(jù)。對

49、初學者來說,經(jīng)過它能更深化地了解各種變量、數(shù)組和構(gòu)造等是如何占用內(nèi)存的,以及數(shù)組越界的過程。在調(diào)用堆棧窗口(Call Stack)中察看函數(shù)調(diào)用的嵌套情況。此窗口在函數(shù)調(diào)用關(guān)系比較復雜或遞歸調(diào)用的情況下,對分析缺點很有協(xié)助 。(2)單步執(zhí)行程序讓程序被一步一步(行)地執(zhí)行,察看分析執(zhí)行過程能否符合預(yù)要求。例如,以下程序預(yù)期的功能是從鍵盤上讀入兩個數(shù)(x和y),判別x和y能否相等,相等那么在屏幕上顯示x=y,不相等那么顯示xy。這是要務(wù)虛現(xiàn)的功能,但程序?qū)嵺`的運轉(zhuǎn)情況卻是:無論輸入什么,都會在屏幕上顯示x=y和xy,程序一定有問題,但外表上看卻能夠找不到問題所在,運用單步執(zhí)行,那么能定位缺點點,

50、減少看的范圍。例如,在單步執(zhí)行的過程中,假設(shè)輸入“2,3,發(fā)現(xiàn)x和y的值確實變成了2和3,此時按道理不應(yīng)執(zhí)行“printf(x=yn);,但單步跟蹤卻發(fā)現(xiàn)被執(zhí)行了,因此多半問題出在“if (x = y)。#include void main()int x, y;printf(Please input x, y:);scanf(%d,%d, &x, &y);if (x = y)printf(x=yn);else;printf(xyn);在單步執(zhí)行的過程中,應(yīng)靈敏運用Step Over、Step Into、Step Out、Run to Cursor等方法,提高伐試效率。建議在程序調(diào)試過程中,記住

51、并運用“Step Over、Step Into、Step Out、Run to Cursor等菜單項的快捷鍵,開場時能夠較陌生、操作較慢,但堅持一段時間就能生巧、效率提高。(3)運用斷言斷言是對某種假設(shè)條件進展檢查(可了解為假設(shè)條件成立那么無動作,否那么應(yīng)報告),它可以快速發(fā)現(xiàn)并定位軟件問題,同時對系統(tǒng)錯誤進展自動報警。斷言可以對在系統(tǒng)中隱藏很深,用其它手段極難發(fā)現(xiàn)的問題進展定位,從而縮短軟件問題定位時間,提高系統(tǒng)的可測性。實踐運用時,可根據(jù)詳細情況靈敏地設(shè)計斷言。運用斷言時,必需在程序的開頭加上:#include 可用斷言來確認函數(shù)的參數(shù)。例如:假設(shè)某函數(shù)參數(shù)中有一個指針,那么運用指針前可對

52、它檢查,以防止其他人調(diào)用本函數(shù)時運用空指針作參數(shù)。代碼如下:int exam_fun( unsigned char *str ) assert(str != NULL); / 斷言“指針不為空,假設(shè)“空(斷言不成立)那么報錯 . /other program code可用斷言來確認能否發(fā)生了不該發(fā)生的情況。例如:以下程序段運轉(zhuǎn)結(jié)果有錯,檢查起來很困難而且搞了很久都不知是什么地方有問題。因此,建議分析程序的正常運轉(zhuǎn)情況應(yīng)該是什么,運轉(zhuǎn)過程中能否出了異常,針對一切(或關(guān)鍵形狀)該當正常的情況,運用斷言,就很有能夠發(fā)現(xiàn)異常緣由,且調(diào)試效率很高。針對該程序段,我們斷言(斷定)變量i的取值應(yīng)該為“i=0

53、 & iSIZE且較關(guān)鍵,但在運轉(zhuǎn)過程中能否有能夠被無意修正(例如其它變量越界)而超出范圍呢,就可運用斷言檢查能否發(fā)生了這樣的情況。for (i=0; i=0 & iSIZE); / 斷言“i的正常取值范圍,假設(shè)斷言不成立那么報錯arrayi = i; . /other program code斷言不成立時(一出現(xiàn)異常),系統(tǒng)將立刻報錯,此時可進入程序調(diào)試形狀,檢查程序的運轉(zhuǎn)情況。3.3 對一個簡單程序的調(diào)試過程假設(shè)預(yù)備編制進展如下計算義務(wù)的一個簡單程序:在知x=3、y=5的情況下,先計算出x與y的和s,差d,商q,模r,而后計算res=s+2d+3q+4r的值(res應(yīng)該等于16)并顯示在屏

54、幕上。但編制的如下程序運轉(zhuǎn)后卻得出了一個錯誤結(jié)果“res=26。#include void main()int x=3, y=5;int s, d, q, r, res;s = x + y;d = s - y;q = x / y;r = x % y;res = s + 2*d + 3*q + 4*r;printf(res=%dn, res);圖3-1 程序dbgTest.cpp的跟蹤調(diào)試分析上述所編制的程序行,假設(shè)能在要輸出res結(jié)果值的那一程序行(倒數(shù)第二行)處設(shè)置一個暫時斷點,讓程序先執(zhí)行到此斷點處(留意設(shè)為斷點的那一行尚未被執(zhí)行!),看一看那時各變量的動態(tài)取值情況,有能夠就會找到出錯的緣

55、由!基于上述分析,先將鼠標光標挪動到“printf(res=%dn, res);那一行處(左鍵單擊那一行恣意位置),從而指定了暫時性斷點的行位置,而后執(zhí)行“BuildStart DebugRun to Cursor選項,使程序運轉(zhuǎn)到所指定行時暫停其執(zhí)行,并顯示出如圖3-1的界面,其中的左下方窗口中就列出了當時各變量的取值情況:和s=8,差d=3(x=3,y=5,它們的差d=3一定是錯誤的!),商q=0,模r=3,最終結(jié)果res=26。再仔細查看程序中擔任計算差d的那一個語句“d=s-y;就會恍然大悟,原來將“x-y誤寫成了“s-y!找到了錯誤,此時可以經(jīng)過菜單項選擇項“DebugStop De

56、bugging,中斷當前的調(diào)試過程并前往正常的編輯形狀,修正所發(fā)現(xiàn)的錯誤后,再一次執(zhí)行將能得出正確結(jié)果“res=16。順便指出,圖3-1中顯示的變量是“自動查看方式的,即VC6自動顯示當前運轉(zhuǎn)上下文中的變量的值。假設(shè)變量比較多,自動顯示的窗口比較混亂,那么可以在 Watch 列表中添加本人想要監(jiān)控的變量名。上述設(shè)置暫時斷點(到鼠標光標那一行處)的調(diào)試手段運用起來很方便,會經(jīng)常運用(也經(jīng)常在到達一個斷點后,又設(shè)置另一個新的暫時斷點)。另外也常配合運用“單步執(zhí)行的方式,來仔細檢查每一步(一個程序行)執(zhí)行后各變量取值的動態(tài)變化情況,如,先經(jīng)過“Run to Cursor執(zhí)行到某一個鼠標光標暫時斷點行

57、處,而后經(jīng)過運用Debug菜單的“Step Over或“Step Into來進展所謂的“單步執(zhí)行,當然,每執(zhí)行一步后,都要仔細察看并分析系統(tǒng)自動給出的各變量取值的動態(tài)變化情況,以便及時發(fā)現(xiàn)異常而找到出錯緣由。3.4 設(shè)計適宜的程序調(diào)試方案讓我們來分析并設(shè)計對如下程序進展調(diào)試的詳細方法與手段(實踐上,對不同的程序,都需求在分析其執(zhí)行結(jié)果以及其程序編寫構(gòu)造的根底上,來設(shè)計相應(yīng)的對其進展詳細調(diào)試的方法與手段,目的是想方設(shè)法逐漸減少“偵查范圍,直到最后找到出錯位置)。該程序除main外,還有一個自定義函數(shù)f。假設(shè)曾經(jīng)能確認調(diào)用f函數(shù)前計算出的res值(或s、d、q或r其中之一的結(jié)果值)不正確的話,那么

58、可像上一程序那樣,在計算出res變量值的下一行(或在靠前一些的某一行)處設(shè)置斷點,看到達那一斷點處能否一切正常。假設(shè)到達斷點處的數(shù)據(jù)結(jié)果曾經(jīng)不正常的話,錯誤曾經(jīng)出現(xiàn)(出如今跟前或出如今前面,從而找到了錯誤或者減少了“偵查范圍);假設(shè)斷點處依然正常,可斷言錯誤出如今后面,而后,一:可又一次經(jīng)過鼠標光標往更靠后一些的適當位置設(shè)置新斷點,再一次“DebugRun to Cursor(一下向后“邁過了許多行,再繼續(xù)“偵查!);二:經(jīng)過“單步執(zhí)行(DebugStepOver),在重點疑心的那一塊地方仔細地逐行進展“偵查。留意,“Step Over不會“跟蹤進入f函數(shù)內(nèi)部,假設(shè)疑心f函數(shù)能夠有問題的話,要

59、經(jīng)過運用“DebugStep Into進入f內(nèi)部再進展細致調(diào)試(在不遇到函數(shù)調(diào)用的地方,“Step Over與“Step Into的功能是一樣的。假設(shè)經(jīng)過“Step Into進入到函數(shù)內(nèi)部,單步執(zhí)行假設(shè)干步之后,假設(shè)發(fā)現(xiàn)不再需求進展單步伐試的話,可經(jīng)過“Step Out從函數(shù)內(nèi)部前往到調(diào)用語句的下一語句處)。作為練習,請讀者利用這一程序?qū)ι鲜龅恼{(diào)試方法與手段進展多方面的靈敏運用與體驗!可以看出,程序調(diào)試是一件很費時費力而又非常細致的任務(wù),需求耐心,要經(jīng)過不斷的實際來總結(jié)與積累調(diào)試閱歷。至于VC6提供的其他調(diào)試方法與手段,這兒就不一一引見了。#include int f(int a)int b,

60、 c;b = a + 5;c = 2*b + 100;return c;void main()int x=3, y=5;int s, d, q, r, res, z;s = x + y;d = x - y;q = x / y;r = x % y;res = s + 2*d + 3*q + 4*r;printf(res=%dn, res);z = f(36);printf(z=%dn, z);前面也提到過,經(jīng)過“Run to Cursor所設(shè)置并到達的斷點是一個暫時性的斷點。實踐上,VC6還提供設(shè)置與去除固定性斷點的方法。設(shè)置固定性斷點最簡單的方法是:在某一程序行處,單擊鼠標右鍵,在菜單中選擇“

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論