用Eclipse完成C語言程式設計的幾個簡單步驟

用Eclipse完成C語言程式設計的幾個簡單步驟

Eclipse是一款被廣泛應用的開發工具,最初它是為編寫Java程式而設計的,但由於它良好的架構並作為開源軟體來發行,有很多的公司和個人以它為基礎開發了外掛,使得Eclipse有了越來越豐富的功能。

CDT (C/C Development Tooling)是Eclipse的一個外掛,它為Eclipse提供了開發C/C 專案的支援,大家可以用它來編寫自己的程式。

下面簡單介紹一下Eclipse CDT的安裝和使用方法。

Eclipse 的安裝

Eclipse
是用 Java
語言編寫的軟體,要執行它,就必須首先安裝Java虛擬機器軟體。要開發C語言的程式,就必須有C語言的Toolchain(編譯器、連結器、偵錯程式等各種系統工具),Eclipse中並不提供這些功能,我們需要單獨安裝。

安裝 Java 虛擬機器

Win32

從校內FTP伺服器10.1.0.155下載Java虛擬機器,並執行安裝。

Linux

Ubuntu Linux 中已經帶有 Java 虛擬機器,執行命令:

  • apt-get install sun-java6-jdk

便可以安裝。

安裝 Toolchain (編譯器、連結器和偵錯程式)

Win32

在Windows上,我們可以使用GNU為我們提供的Toolchain,其中一個比較容易使用的版本是MinGW,它包括了GNU GCC、binutils、gdb等工具包。

可以從ftp://10.1.0.155/pub/Develop/IDE/Eclipse.CDT/mingw.exe下載,下載後執行,並將它們解壓到C盤根目錄中。注意,必須是C盤的根目錄,不要吝惜你的C盤,編譯器這樣重要的東西絕對有必要放在上面。解壓後,MinGW即被安裝在C:\mingw內。

如果你希望能夠從命令列啟動gcc等程式,可以修改PATH,並將C:\mingw\bin加入其中。

Linux

大多數的Linux系統都會安裝有GNU的Toolchain,在Ubuntu Linux上,如果你的系統沒有安裝,請使用命令

  • apt-get install build-essential

來安裝。

安裝 Eclipse For C/C

ftp://10.1.0.155/pub/Develop/IDE/Eclipse.CDT/下載跟自己的系統相對應的版本,並解壓到磁碟上即可,不需要特殊的安裝程式。這個版本的Eclipse,並未包含開發Java的功能。

執行Eclipse

在安裝好Eclipse之後,執行該目錄中的eclipse.exe和eclipse檔案即可開啟它。由於Eclipse是一個功能非常豐富的系統,啟動它會需要一些時間,特別是在配置比較低的電腦上

選擇Workspace

Eclipse一旦執行,便會彈出一個視窗,要求使用者選擇一個工作空間(Workspace),在Eclipse執行之後,所有的專案和檔案預設情況下都會儲存在這個工作空間中,並且我們對Eclipse進行的任何設定也都是和Workspace相關聯的。因此除非有特別的需要,沒有什麼必要經常切換工作空間。

選擇好後點確定鍵,Eclipse會繼續啟動程序。

Eclipse視窗的組成

Eclipse的視窗由很多個部分組成,其中每一個部分稱為一個View,而將一些View按照一定的佈局組合在一起,則稱為一個Perspective。每個View都有自己的功能,而不同的Perspective則通常適用於不同的工作。譬如”C/C “這個Perspective通常用來做C/C 的開發,而”Debug”這個Perspective通常用來做Debug。

在螢幕的左上角,選單的下面有按鈕可以切換Perspective,同樣,在Eclipse的選單中也有專案專門用來做同樣的事情。

開發C語言程式

建立專案

與TC開發不同,在Eclipse中開發程式,必須首先建立一個專案,然後才能在這個專案中編寫自己的程式。否則即便編寫了程式也沒有辦法編譯、執行。建立專案的步驟如下:

  1. File | New | Project 見圖

2. 輸入專案的名字,注意不要使用中文,這可能導致一些奇怪的問題

3. 在Project Types中選擇Hello World ANSI C Project,這個型別的專案對於我們的程式設計課程是很合適的,見圖

4. 點選Finish按鈕

這時在專案列表中就會看到新建立的專案。

開啟原始檔

展開專案內容列表,會發現其中有src目錄,展開該目錄,可以看到一個與專案同名的C檔案,雙擊這個檔案即可看到Eclipse為我們生成的一個很簡單的Hello World程式。我們可以直接對其進行修改,編寫自己的程式。

編輯原始檔

編輯原始檔並不困難,Eclipse會將程式碼用多種顏色顯示程式碼,並且會在檔案編輯的過程中為我們維護程式碼縮排。除此以外,Eclipse還為程式設計師編寫原始碼提供了很多方便的功能,程式碼程式碼重排版就是其中的一個。

程式碼重排版

在編寫程式碼的過程中,由於各種的原因,程式碼的格式會發生變化,會混亂,不再符合我們課程提供的要求。這時,可以使用程式碼重排版直接調整程式碼的格式。具體的操作步驟為:

  1. Ctrl-A選擇全部原始碼
  2. Ctrl-Shift-F對程式碼進行重排版

排版之後的格式基本上是符合我們的要求的,同時看起來也會更清晰。

Build

編寫好程式碼之後,在執行程式之前首先是編譯連結,在Eclipse中,這個步驟稱為Build Project。點選工具欄上的錘子圖示,如下圖中(1)所示

在Build時,若程式中有錯誤,Eclipse會將它顯示出來。行首的紅色或者黃色標記分別表示錯誤和警告,如圖中(2)所示。錯誤的具體原因,會顯示在螢幕的下方,如圖中(3)所示。

如果有錯誤,Eclipse是不能生成最終的可執行檔案的,在執行程式前,必須要修正所有的錯誤。

修改過原始碼之後,Eclipse不會自動重新Build該專案,需要我們手工執行該操作,可以再次點選工具欄上的錘子型圖示,也可以使用快捷鍵ctrl-b

執行程式

若Build Project成功,則可以執行程式。點選工具欄上的綠色Play圖示或按快捷鍵“Ctrl-F11”即可執行程式。執行程式後,輸入和輸出都將在原始碼編輯視窗下方的ConsoleView中進行,最簡單的方法是把網頁上的輸入內容直接複製貼上到Console中。

除錯 C 語言程式


開始除錯

除錯程式和執行程式不同,除錯程式時我們可以使用斷點、單步執行、Watch等工具來檢視程式的執行狀態。在Eclipse中可以直接使用GDB來除錯程式,點選工具欄上的“蟲子”按鈕或者按快捷鍵“F11”便可以除錯過程。

除錯檢視

開始除錯後,系統會彈出一個視窗並建議我們切換的除錯檢視,這時可以點選“Yes”。除錯檢視與編碼檢視不同,主要是在程式碼上方顯示出了正在執行的程序和當前函式中自動變數的值。

監視變數的值

有時我們要監視的變數的值並沒有直接顯示出來,這時我們可以讓它在Expression檢視中來顯示。

Step Into 與 Step Over

單步執行,就是每次執行一行程式,執行完這一行程式後,偵錯程式會將程式執行暫停,這時我們就可以去檢視變數的值。

Step Into與Step Over都是單步執行,其差別在於當我們定義了一個函式,並在呼叫該函式的語句行上單步執行時,是進入到函式的內部還是將函式作為一個整體來執行。對於標準庫函式如printf和scanf等,即便是使用Step Into,Eclipse也不會對這個函式進行單步執行。

設定斷點

單步執行雖然可以讓我們監控到程式每一步的狀態,但對於比較大比較長的程式來說,一步一步執行未免太浪費時間。這時我們可以使用斷點功能,讓程式在某個指定的位置停止下來,而不是每執行一行都停下來。

當程式的執行在斷點處停下來後,要使其繼續執行,可以使用“Resume”功能。

終止除錯

Eclipse可以同時除錯多個程式,為了避免佔用太多的資源,當發現了程式中的錯誤後,就應該終止除錯。如果不將它們終止,這些被除錯的程式所佔用的資源也就不能被釋放,會使系統的速度變得很慢。

常見問題

為何使用數學函式後Build Project時會出錯

數學函式,如sqrt和pow等雖然是C標準函式庫的一部分,但它們被獨立儲存在數學函式庫libm中,GCC在編譯連結程式時,是不會自動連結該庫的。我們必須手工修改配置讓Eclipse在呼叫GCC編譯連結程式時,將libm也加入到連結的檔案列表中。具體的方法是:

  1. 在專案名稱上點選滑鼠右鍵,選擇“Properties”
  2. 選擇C/C Build | Setting
  3. 選擇右側的GCC C Linker下的Libraries
  4. 然後在Libraries(-l)列表中加上m,然後點OK
  5. 按Ctrl-b重新Build專案

如何方便地給編譯新增引數

固然可以在project property裡逐一新增引數,但有時候要新增幾十條引數或者經常要換引數來測試編譯,這樣一來會很麻煩. 解決方法就是建立makefile專案(比如新建工程裡的C makefile project). makefile檔案裡要求按照在終端輸入的格式寫入編譯命令.非常方便修改. 

有那些編譯器可以選擇

Linux 下一般採用GCC和G Windows下可以使用GCC和G 移植版本,比如MinGW這類專案. Windows下也可以才用VC 的編譯器,但是現在Windows SDK提供的C 編譯器只能使用makefile來編譯,其命令為nmake