用Eclipse來(lái)進(jìn)行C語(yǔ)言編程的簡(jiǎn)單步驟介紹
Eclipse是一款被廣泛應(yīng)用的開(kāi)發(fā)工具,最初它是為編寫(xiě)Java程序而設(shè)計(jì)的,但由于它良好的架構(gòu)并作為開(kāi)源軟件來(lái)發(fā)行,有很多的公司和個(gè)人以它為基礎(chǔ)開(kāi)發(fā)了插件,使得Eclipse有了越來(lái)越豐富的功能。
CDT (C/C++ Development Tooling)是Eclipse的一個(gè)插件,它為Eclipse提供了開(kāi)發(fā)C/C++項(xiàng)目的支持,大家可以用它來(lái)編寫(xiě)自己的程序。
下面簡(jiǎn)單介紹一下Eclipse CDT的安裝和使用方法。
Eclipse 的安裝
Eclipse
是用 Java
語(yǔ)言編寫(xiě)的軟件,要運(yùn)行它,就必須首先安裝Java虛擬機(jī)軟件。要開(kāi)發(fā)C語(yǔ)言的程序,就必須有C語(yǔ)言的Toolchain(編譯器、鏈接器、調(diào)試器等各種系統(tǒng)工具),Eclipse中并不提供這些功能,我們需要單獨(dú)安裝。
安裝 Java 虛擬機(jī)
Win32
從校內(nèi)FTP服務(wù)器10.1.0.155下載Java虛擬機(jī),并運(yùn)行安裝。
Linux
Ubuntu Linux 中已經(jīng)帶有 Java 虛擬機(jī),執(zhí)行命令:
apt-get install sun-java6-jdk
便可以安裝。
安裝 Toolchain (編譯器、鏈接器和調(diào)試器)
Win32
在Windows上,我們可以使用GNU為我們提供的Toolchain,其中一個(gè)比較容易使用的版本是MinGW,它包括了GNU GCC、binutils、gdb等工具包。
可以從ftp://10.1.0.155/pub/Develop/IDE/Eclipse.CDT/mingw.exe下載,下載后執(zhí)行,并將它們解壓到C盤(pán)根目錄中。注意,必須是C盤(pán)的根目錄,不要吝惜你的C盤(pán),編譯器這樣重要的東西絕對(duì)有必要放在上面。解壓后,MinGW即被安裝在C:mingw內(nèi)。
如果你希望能夠從命令行啟動(dòng)gcc等程序,可以修改PATH,并將C:mingwbin加入其中。
Linux
大多數(shù)的Linux系統(tǒng)都會(huì)安裝有GNU的Toolchain,在Ubuntu Linux上,如果你的系統(tǒng)沒(méi)有安裝,請(qǐng)使用命令
apt-get install build-essential
來(lái)安裝。
安裝 Eclipse For C/C++
從ftp://10.1.0.155/pub/Develop/IDE/Eclipse.CDT/下載跟自己的系統(tǒng)相對(duì)應(yīng)的版本,并解壓到磁盤(pán)上即可,不需要特殊的安裝程序。這個(gè)版本的Eclipse,并未包含開(kāi)發(fā)Java的功能。
運(yùn)行Eclipse
在安裝好Eclipse之后,執(zhí)行該目錄中的eclipse.exe和eclipse文件即可開(kāi)啟它。由于Eclipse是一個(gè)功能非常豐富的系統(tǒng),啟動(dòng)它會(huì)需要一些時(shí)間,特別是在配置比較低的電腦上
選擇Workspace
Eclipse一旦運(yùn)行,便會(huì)彈出一個(gè)窗口,要求用戶(hù)選擇一個(gè)工作空間(Workspace),在Eclipse運(yùn)行之后,所有的項(xiàng)目和文件缺省情況下都會(huì)存儲(chǔ)在這個(gè)工作空間中,并且我們對(duì)Eclipse進(jìn)行的任何設(shè)置也都是和Workspace相關(guān)聯(lián)的。因此除非有特別的需要,沒(méi)有什么必要經(jīng)常切換工作空間。
選擇好后點(diǎn)確定鍵,Eclipse會(huì)繼續(xù)啟動(dòng)進(jìn)程。
Eclipse窗口的組成
Eclipse的窗口由很多個(gè)部分組成,其中每一個(gè)部分稱(chēng)為一個(gè)View,而將一些View按照一定的布局組合在一起,則稱(chēng)為一個(gè)Perspective。每個(gè)View都有自己的功能,而不同的Perspective則通常適用于不同的工作。譬如"C/C++"這個(gè)Perspective通常用來(lái)做C/C++的開(kāi)發(fā),而"Debug"這個(gè)Perspective通常用來(lái)做Debug。
在屏幕的左上角,菜單的下面有按鈕可以切換Perspective,同樣,在Eclipse的菜單中也有項(xiàng)目專(zhuān)門(mén)用來(lái)做同樣的事情。
開(kāi)發(fā)C語(yǔ)言程序
創(chuàng)建項(xiàng)目
與TC開(kāi)發(fā)不同,在Eclipse中開(kāi)發(fā)程序,必須首先創(chuàng)建一個(gè)項(xiàng)目,然后才能在這個(gè)項(xiàng)目中編寫(xiě)自己的程序。否則即便編寫(xiě)了程序也沒(méi)有辦法編譯、運(yùn)行。創(chuàng)建項(xiàng)目的步驟如下:
File | New | Project?
1. 輸入項(xiàng)目的名字,注意不要使用中文,這可能導(dǎo)致一些奇怪的問(wèn)題
2. 在Project Types中選擇Hello World ANSI C Project,這個(gè)類(lèi)型的項(xiàng)目對(duì)于我們的程序設(shè)計(jì)課程是很合適的,見(jiàn)圖
3. 點(diǎn)擊Finish按鈕
這時(shí)在項(xiàng)目列表中就會(huì)看到新創(chuàng)建的項(xiàng)目。
打開(kāi)源文件
展開(kāi)項(xiàng)目?jī)?nèi)容列表,會(huì)發(fā)現(xiàn)其中有src目錄,展開(kāi)該目錄,可以看到一個(gè)與項(xiàng)目同名的C文件,雙擊這個(gè)文件即可看到Eclipse為我們生成的一個(gè)很簡(jiǎn)單的Hello World程序。我們可以直接對(duì)其進(jìn)行修改,編寫(xiě)自己的程序。
編輯源文件
編輯源文件并不困難,Eclipse會(huì)將代碼用多種顏色顯示代碼,并且會(huì)在文件編輯的過(guò)程中為我們維護(hù)代碼縮進(jìn)。除此以外,Eclipse還為程序員編寫(xiě)源代碼提供了很多方便的功能,代碼代碼重排版就是其中的一個(gè)。
代碼重排版
在編寫(xiě)代碼的過(guò)程中,由于各種的原因,代碼的格式會(huì)發(fā)生變化,會(huì)混亂,不再符合我們課程提供的要求。這時(shí),可以使用代碼重排版直接調(diào)整代碼的格式。具體的操作步驟為:
Ctrl-A選擇全部源代碼 Ctrl-Shift-F對(duì)代碼進(jìn)行重排版
排版之后的格式基本上是符合我們的要求的,同時(shí)看起來(lái)也會(huì)更清晰。
Build
編寫(xiě)好代碼之后,在執(zhí)行程序之前首先是編譯鏈接,在Eclipse中,這個(gè)步驟稱(chēng)為Build Project。點(diǎn)擊工具欄上的錘子圖標(biāo),如下圖中(1)所示
在Build時(shí),若程序中有錯(cuò)誤,Eclipse會(huì)將它顯示出來(lái)。行首的紅色或者黃色標(biāo)記分別表示錯(cuò)誤和警告,如圖中(2)所示。錯(cuò)誤的具體原因,會(huì)顯示在屏幕的下方,如圖中(3)所示。
如果有錯(cuò)誤,Eclipse是不能生成最終的可執(zhí)行文件的,在執(zhí)行程序前,必須要修正所有的錯(cuò)誤。
修改過(guò)源代碼之后,Eclipse不會(huì)自動(dòng)重新Build該項(xiàng)目,需要我們手工執(zhí)行該操作,可以再次點(diǎn)擊工具欄上的錘子型圖標(biāo),也可以使用快捷鍵ctrl-b。
執(zhí)行程序
若Build Project成功,則可以運(yùn)行程序。點(diǎn)擊工具欄上的綠色Play圖標(biāo)或按快捷鍵“Ctrl-F11”即可運(yùn)行程序。運(yùn)行程序后,輸入和輸出都將在源代碼編輯窗口下方的ConsoleView中進(jìn)行,最簡(jiǎn)單的方法是把網(wǎng)頁(yè)上的輸入內(nèi)容直接復(fù)制粘貼到Console中。
調(diào)試 C 語(yǔ)言程序
開(kāi)始調(diào)試
調(diào)試程序和執(zhí)行程序不同,調(diào)試程序時(shí)我們可以使用斷點(diǎn)、單步執(zhí)行、Watch等工具來(lái)查看程序的運(yùn)行狀態(tài)。在Eclipse中可以直接使用GDB來(lái)調(diào)試程序,點(diǎn)擊工具欄上的“蟲(chóng)子”按鈕或者按快捷鍵“F11”便可以調(diào)試過(guò)程。
調(diào)試視圖
開(kāi)始調(diào)試后,系統(tǒng)會(huì)彈出一個(gè)窗口并建議我們切換的調(diào)試視圖,這時(shí)可以點(diǎn)擊“Yes”。調(diào)試視圖與編碼視圖不同,主要是在代碼上方顯示出了正在執(zhí)行的進(jìn)程和當(dāng)前函數(shù)中自動(dòng)變量的值。
監(jiān)視變量的值
有時(shí)我們要監(jiān)視的變量的值并沒(méi)有直接顯示出來(lái),這時(shí)我們可以讓它在Expression視圖中來(lái)顯示。
Step Into 與 Step Over
單步執(zhí)行,就是每次執(zhí)行一行程序,執(zhí)行完這一行程序后,調(diào)試器會(huì)將程序執(zhí)行暫停,這時(shí)我們就可以去查看變量的值。
Step Into與Step Over都是單步執(zhí)行,其差別在于當(dāng)我們定義了一個(gè)函數(shù),并在調(diào)用該函數(shù)的語(yǔ)句行上單步執(zhí)行時(shí),是進(jìn)入到函數(shù)的內(nèi)部還是將函數(shù)作為一個(gè)整體來(lái)執(zhí)行。對(duì)于標(biāo)準(zhǔn)庫(kù)函數(shù)如printf和scanf等,即便是使用Step Into,Eclipse也不會(huì)對(duì)這個(gè)函數(shù)進(jìn)行單步執(zhí)行。
設(shè)置斷點(diǎn)
單步執(zhí)行雖然可以讓我們監(jiān)控到程序每一步的狀態(tài),但對(duì)于比較大比較長(zhǎng)的程序來(lái)說(shuō),一步一步運(yùn)行未免太浪費(fèi)時(shí)間。這時(shí)我們可以使用斷點(diǎn)功能,讓程序在某個(gè)指定的位置停止下來(lái),而不是每運(yùn)行一行都停下來(lái)。
當(dāng)程序的執(zhí)行在斷點(diǎn)處停下來(lái)后,要使其繼續(xù)運(yùn)行,可以使用“Resume”功能。
終止調(diào)試
Eclipse可以同時(shí)調(diào)試多個(gè)程序,為了避免占用太多的資源,當(dāng)發(fā)現(xiàn)了程序中的錯(cuò)誤后,就應(yīng)該終止調(diào)試。如果不將它們終止,這些被調(diào)試的程序所占用的資源也就不能被釋放,會(huì)使系統(tǒng)的速度變得很慢。
常見(jiàn)問(wèn)題
為何使用數(shù)學(xué)函數(shù)后Build Project時(shí)會(huì)出錯(cuò)
數(shù)學(xué)函數(shù),如sqrt和pow等雖然是C標(biāo)準(zhǔn)函數(shù)庫(kù)的一部分,但它們被獨(dú)立存儲(chǔ)在數(shù)學(xué)函數(shù)庫(kù)libm中,GCC在編譯鏈接程序時(shí),是不會(huì)自動(dòng)鏈接該庫(kù)的。我們必須手工修改配置讓Eclipse在調(diào)用GCC編譯鏈接程序時(shí),將libm也加入到鏈接的文件列表中。具體的方法是:
在項(xiàng)目名稱(chēng)上點(diǎn)擊鼠標(biāo)右鍵,選擇“Properties” 選擇C/C++ Build | Setting 選擇右側(cè)的GCC C Linker下的Libraries 然后在Libraries(-l)列表中加上m,然后點(diǎn)OK 按Ctrl-b重新Build項(xiàng)目
如何方便地給編譯添加參數(shù)
固然可以在project property里逐一添加參數(shù),但有時(shí)候要添加幾十條參數(shù)或者經(jīng)常要換參數(shù)來(lái)測(cè)試編譯,這樣一來(lái)會(huì)很麻煩. 解決方法就是建立makefile項(xiàng)目(比如新建工程里的C++ makefile project). makefile文件里要求按照在終端輸入的格式寫(xiě)入編譯命令.非常方便修改.?
有那些編譯器可以選擇
Linux 下一般采用GCC和G++ Windows下可以使用GCC和G++移植版本,比如MinGW這類(lèi)項(xiàng)目. Windows下也可以才用VC++的編譯器,但是現(xiàn)在Windows SDK提供的C++編譯器只能使用makefile來(lái)編譯,其命令為nmake?