天地 导航仪_e陆航车载导航仪_任我游导航仪升级_

来源:百度文库 编辑:神马文学网 时间:2024/04/24 21:22:57

  White   Beige   Bisque   lightgray   Green   Pink   Gold   Cyan

版權: 德嘉書業- 作者: 伍新華 http://www.takka.com.hk


第 10 章 C compilers

 

10.1 C、C++、Visual C++ 編譯器

    1. C、C++、Visual C++ 的起源
    2. 這一章需要的 compiler
    3. C 語言的編寫環境

10.2 lcc-Win32 compiler

    1. 下載和安裝
    2. 使用 [Help]
    3. 開啟程式和設定操作目錄
    4. 在 Text editor 輸入程式句子
    5. Debug (檢錯)
    6. 造出程式檔
    7. 試用


 

本章學習指引:

  第11章 說的 C 語言需要 C 或 C++ 的 compiler 來練習, 你可使用任何一個 C 或 C/C++ compiler, 因你只是初步學習 C 語言, 若沒商業性的 compiler, 當然不值得為此而花數千元來購買, 你可使用一個名為 lcc-Win32 的免費 C compiler 來作練習, 這軟件在校園中十分流行, 請看10.2 一節中的介紹。

  在商業軟件中, 目前較多見的是 Microsoft Visual C++, 另一個也較多見的是 Borland C++, 這兩個軟件操作都很方便, 這一章會介紹這兩個軟件的基礎操作。另一個歷史悠久的 DOS 版本的 compiler 是 Turbo C, 因這程式在市面已少見, 所以本書不包括這程式。(留意: 本書說的是以 C 語言造出 DOS 程式, 所以就算你用最先進的 Microsoft Visual C++ V6, 也只是用來產生 DOS 程式, 所以請你盡量使用較簡單的 lcc-Win32、Borland C++ 或 Turbo C。)

  每一個 compiler 都會提供一些預設 function 給使用者, 這些 function 是軟件商自己編寫的, 在微細地方可能每個 compiler 不同, 例如 printf() 是顯示某個記憶體範圍的資料, Borland C++ 在中途遇到 EOF 的字符就會停止, 因此不顯示隨後範圍內的空位, 而 Microsoft C++ 則整個範圍都會顯示 (因此會顯示下方空位), 同一的原始檔案, 用不同 compiler 產生出來的程式, 可能會有不同反應, 本書的例子是以 lcc-Win32 compiler 為依據。

  這一章說到三個 compiler 的初步操作, 你可因應自己使用的編譯器而參看有關的資料, 但請你留意, 這不是三個 compiler 的使用手冊, 因為每一個 compiler 的完整說明最少需要一本厚書的篇幅, 這一章說的資料只僅足夠你應付第11章 的操作。

 

 

10.1 C、C++、Visual C++ 編譯器

 

1. C、C++、Visual C++ 的起源

  在第1章-P.3 介紹過 C 語言的特點, 這是 1972 年 Dennis Ritchie 在 AT&T 實驗室創造出來, 稱為 C 的原因是這語言很多地方是源自 B 語言 (1970 年 Ken Thompson 在 AT&T 創造), 而 B 又源自 BCPL 語言, 最終是源自 1960 的 Algo 語言。

  C 語言出現後, 迅即成為個人電腦中主要的一般性程式語言, 在 1986 年, Bjarne Stroustrup 在 AT&T Bell 實驗室將 C 語言擴展成 C++, 這是物件導向語言 (object-oriented language), 比 C 複雜得多, 但自然功能更強, 適合發展視窗式的圖形顯示軟件。

  C 與 C++ 都是指程式的語法, 在編寫時, 需要一個編譯器 (compiler), Visual C++ 是編譯器軟件的名稱, 這類編譯器的特點提供一個整合性的編寫環境, 例如 Microsoft Visual C++, 除了一般性的功能 (文字編輯器、檢錯功能等等), 還提供大量現成的物件和程式庫給程式員使用, 是為 MFC (Microsoft Foundation Class), 也可用 Wizard (精靈) 的方式造出指定的程式外殼, 例如功能列、工具列、狀態列等等, 都可以自動產生, 這就可大大減輕程式員的工作, 當然實際的程式反應內容, 就要程式員自行編寫了。

 

 

2. 這一章需要的 compiler

  在這一章的例子, 你可使用以下軟件進行編譯:

1. lcc-Win32 C compiler
2. 「視窗」版本的 Borland C++
3. 「視窗」版本的 Microsoft Visual C++
4. DOS 版本的 Borland Turbo C

  Turbo C 是最簡單的編譯器, 可在 MS-DOS 模式中執行, 這足夠應付這一章全部例子的程式, 就算你用 Microsoft Visual C++, 筆者也會使用這軟件內用來產生 DOS 程式的編譯器, 目的是避免因要產生視窗元件所需的複雜操作, 因為本書的目標是解說 C 語法, 不是編譯器的使用方式。

 

 

3. C 語言的編寫環境

  第1章 (P.2) 說過有關 compiled language 的特點, C 語言是一個 compiled langauge, 所以編寫 C 語言需要一個 compiler 軟件, 一個完整及功能完善的 compiler 當然要能將 source code 編譯成程式, 此外, 最少還要有 editor、linker、debugger、library 這幾項功能, 請看圖-1

  一些編譯器還有 optimizer 設備, 可將造出來的程式進行 optimization (最佳化), 目的是刪去冗餘的程序, 以增加程式碼的效率, 使程式更短更快。

圖-1 一個 compiler 的核心部份

a) Editor (編輯器)
  
Editor 是一個文字編輯器, 是編寫程式的地方, 也負責存檔的工作, 使用方式就如一般的文書編輯器, 但不同功能的文字可能會自動使用不同顏色、粗體、斜體、底線等等, 例如 symbol、comment、identifier 等會有不同顯示, 以方便程式員辨別, 有些能讓程式員自行選擇字體樣式。在 Editor 寫好的程式是一個純文字檔案, 是為原始檔 (source file 或 source code), 存檔時習慣使用 c 為副檔名 (若是 C++ 檔案會是 cpp)。

 

b) Debugger (檢錯器)
  在編寫程式的過程, 程式員可使用 debugger 的功能來檢查程式是否有錯誤, 若有錯誤, debugger 會顯示在哪一行出錯及錯的原因。

  在檢錯功能上, 每個 compiler 可能不同, 有些較為嚴緊, 例如你在程式宣告了一個變數, 但在整個程式內都沒有使用這變數, Microsoft Visual C++ 會提示用者, lcc-Win32 則不會, 有些編譯器容許用戶調校嚴緊的程度。

 

c) Library (Function library / 功能程式庫)
  在程式中, 我們利用 function 來進行一些操作, 在隨後例子中的 printf() 就是一個 function, 是用來在螢幕顯示文字, compiler 一早已預設了許多常用的 function 片段, 放在 library 的目錄內 (目錄名稱一般是 include), 用者不需自行編寫, 所以 library 其實是一個 function 集, 市面也有一些獨立的 function 集出售。

 

d) Compiler (編譯器) / linker (連結器)
  Compiler 的功用是將 source file 內的 source code (原始碼) 編譯成 object code (目的碼) 及存檔, 副檔名是 obj (目的檔), 若 source code 內有語法錯誤, compiler 會檢查出來及向用者顯示錯誤的地方。編譯完畢, 下階段是利用一個 linker 程式加進從 library 取用的 function, 才變成一個 exe 檔案 (執行檔案)

  在隨後的練習, 原始檔案中有 cprintf() 這個 function 名稱 (留意: 只是一個名稱, 不是實際程式), 在連結 (linking) 的時候, linker 會從 library 中取出 cprintf() 真正的程式片段, 放進 obj 檔案內, 最後變出 exe 的執行檔案。若程式編寫時分為多部份, linker 也負責將各部份連起來, 所以 linker 是一個合併中心, 請看下圖:

圖-2 Compiler 及 linker 的功用

 

e) Help (說明)
  
良好的編譯器應有一個詳盡的說明指引, 除了書本的說明, 最好能有線上說明 (online help), 使用者在編寫程式其間可隨時查看所需資料。若是「視窗」版本的編譯器, 在功能列的 [Help] 下可叫出說明指引。

 

f) Compile-time error 及 run-time error
  在編譯的時候, 若原始檔案有錯誤, 編譯器可能會檢查出來, 也可能不能, 若檢查出來, 就會發出錯誤訊息, 若不是嚴重錯誤, 也會進行編譯, 否則會在錯誤處就停下, 在編譯時發現到的錯誤是為 compile-time error (編譯期錯誤)

  若一些嚴重錯誤在編譯時不能檢查出來, 編譯後得出來的程式就會有 bugs, 有時在編譯時不會有錯誤, 但使用時有錯誤 (請看第2章-練習-2 (P.4) 的 overflow 試驗), 就會停頓, 若在「視窗」操作系統執行這程式,「視窗」發現到錯誤就會停止該程式, 而且發出 run-time error (執行期錯誤) 的訊息, 你在「視窗」使用各類程式, 一定會遇過有些編寫得較差的程式常常有 run-time error。

 

 

 

10.2 lcc-Win32 compiler

  使用 lcc compiler 要留意事項:

1. 每一項工作使用一個新的 project 和一個獨立的資料夾, 例如這一節說的 project 是 study1, 使用的資料夾是 d:\studyC1, 若要造出第二個程式, 可使用 study2 為 project 名稱和使用 d:\studyC2 資料夾, 不要將 study2 放在前個資料夾內。

2. 盡量使用這編譯器為你預設的資料夾和名稱

3. 留意: 在功能列的 [Edit] 內的 [Paste] 操作有誤, 第一次按 [Paste] 貼上數行文字, 畫面不會出現文字, 因為文字是移了去視窗上方 (你按 [↑] 將文字指標移上才會看到文字), 假若你不知文字已貼上, 再按 [Paste] 多一次, 今次才會出現文字, 實際已重複貼了兩次 (第一次文字是在視窗之頂), 所以編譯時會有錯誤, 也不能造出程式。

 

 

1. 下載和安裝

  lcc-Win32 是一個 C compiler, 除了完整的程式, 還有這軟件的使用手冊和線上的 C 語言說明功能, 另有一個獨立 C 語言教學指導。這軟件只供網路免費下載或互相傳送, 讓使用者作個人學習或教學之用, 但不能放在光碟中作為商業附送品 (這屬商業用途), 所以本光碟書不能收錄這軟件, 請讀者自行從 Internet 或其他途徑取得這軟件, 因為這軟件十分流行, 很多下載網站或學術機構都有提供下載途徑, 你可用 www.google.com 的搜尋功能來找一個有這軟件的本地網站, 或到以下有聯繫的網站尋找:

www.q-software-solutions.com
www.cs.virginia.edu/~lcc-win32

  lcc-Win32 軟件有多個部份, 有些網站會將全部資料合為一個 zip 檔案, 體積是 18 MB, 常見的是 lcc.zip 或 lccWin32.zip 這些檔名, 但實際上你不需要全部份, 所以你可考慮下載以下各獨立部份。

  lcc-Win32 compiler system (lccwin32.exe, 3.2M): 這會安裝 compiler 程式, 必需下載。

  lcc-win32 users manual (manual.exe, 1.9M): 這會安裝 html 格式的使用手冊 (user‘s manual), 在圖-3 的 [Index] 會叫出瀏覽器來顯示手冊資料。(html 格式與 doc 格式的內容大致相同。)

  lcc-win32 users manual and technical documentation (lccdoc.exe, 2.1M): 這會安裝 c-tutorial.doc 和 manual.doc, 是 C 教學課程和 lcc-Win32 的使用手冊, 若你要進一步學習 C, 可參看 c-tutorial.doc, 不過是全英文, 而且說得頗技術性。

  Windows API documentation (win32hlp.exe, 12.8M): 這是 API (Application Program Interface) 的使用說明, API 程式是用來控制「視窗」操作系統的語法, 初學者可以不理。

 

  上述程式在執行安裝時, 要你指定一個資料夾用來安放產生出來的程式, 你可使用 C:\lcc 這資料夾名稱。

 

 

2. 使用 [Help]

  開啟程式後, 在功能列的 [Help] 可叫出以下選項, 實際還要看你安裝了哪一項說明

圖-3 lcc-Win32 的說明選項

 

1. [Index]: 這會叫出瀏覽器來載入 html 格式的 compiler 使用手冊, 若沒有安裝這手冊, 會啟動下一項的 [Standard C library]。

2. [Standard C library ]: 這會開啟一般 Help 格式的說明, 內容是 C 語言的語法說明。

3. [Win32 API]: 這會開啟一般 Help 格式的說明, 內容是 API 的語法說明。

4. [Manual]/[Technical doc]/[Resources doc]/[C-Tutorial]: 若安裝 lccdoc.exe 就有這四項, 這會啟動 Word 來載入有關的檔案。

 

 

3. 開啟程式和設定操作目錄

  要使用 lcc-Win32 程式來工作, 請你在「開始功能表」中開啟編譯器, 或在 lcc 目錄內的 資料夾開啟 wedit.exe 這程式, 就可開啟編譯器的編輯畫面, 有圖-6 的工作視窗。

  在編寫原始檔案前, 你先要設定一個 project (專案) 名稱和一個資料夾來安放操作用的檔案, project 是指整個產生程式的工作, 這包括我們編寫的原始檔案和一些其他中途檔案, 將來造出來的程式會以這 project 為名

  請你在功能列的 [File] 下選 [New] , 再選 [Project], 有以下對話盒要你輸入 Project name, 請你輸入一個名稱, 例如 study1, 將來造出來的程式會是 study1.exe

圖-4 在這對話盒放下 project 的名稱

  按 [OK], 跟著有這對話盒:

圖-5 這對話盒是選擇存放目錄和產生哪一類程式

  [Name of the project] 中的 "study1" 是圖-4 中放下的名稱, 在 [Working directory] 中請你放下一個名稱, 例如 d:\studyC1, 這是今次 project 用的資料夾, 請你用滑鼠在 [Output directory] 中按一下, 就會自動出現這名稱 d:\studyC1\lcc (請盡量不要更改這預設的名稱), 這是放置程式產品的地方, 盡量不要更改這名稱, 否則這編譯器可能找不到這資料夾。

  在 [Type of project] 中預設是選了 [Console Application], 這是產生 DOS 程式, 不要更改, 請你按 [Create], 就會產生 d:\studyC1d:\studyC1\lcc 這目錄結構, 跟著有以下對話盒:

  若你選 [是], 就會造出一個空殼的原始檔案, 你可自行嘗試, 在今次練習, 請你按 [否], 跟著有目錄對話盒要你輸入今次原始檔案 (C source) 的名稱, 例如你給予這檔案 demo1.c 的名稱, 按 [開啟], 再會有對話盒要你確定, 請按 [Validate] (即是確定), 跟著會有一連串的對話盒要你設定各項操作, 請你接受全部預設值, 不需作任何更改, 一路按 [下一步] 和 [完成], 最後會得到以下工作畫面。

圖-6 lcc compiler 的原始檔案編輯畫面

  得到上以畫面後, 就可在編輯器中輸入原始檔案的程式碼。

  (假若你要開啟一個以前使用過的 project, 可在功能列的 [Project] 下選 [Open] 來開啟這 project, 然後在功能列的 [File] 下選 [New]/[File] 或 [Open], 就可開啟一個新的或已有的原始檔案, 這也會得到圖-6 的編輯畫面。在這功能列下也可刪去已有的 project。)

 

4. 在 Text editor 輸入程式句子

  第4章 說過 "Hello World" 這類示範程式, 是用來介紹一個程式語言或編譯器的初步操作, 這一節說如何用 lcc compiler 造出一個 "Hello Word" 程式, 隨後的練習不會重複建立程式的程序。

  請在圖-6 的編輯畫面鍵入以下文字, \n \r 是在顯示文字後加多一個空行, 無實際操作用途。

/* This is a simple Hello World program (這是 comment) */
#include
void main()
{   cprintf("
Hello, World !\n \r") ;
}

  你也可以將這程式的句子, 用剪貼的方式複製到編譯器的編輯畫面, (留意: 貼上的文字可能是在視窗之頂, 你要按 [↑] 將顯示範圍移上才看到文字), 視窗中應有以下結果:

圖-7 在編輯器中鍵入程式的句子

  寫好程式或在編寫中途, 可選 [Save] 將資料存檔, 在編譯程式時, 若你未存檔, 會有對話盒要你先存檔。

 

 

5. Debug (檢錯)

  你可使用編譯器來檢查語法是否有錯誤, 請你在功能列的 [Compiler] 下選 [Execute study1.exe] 或 [Rebuild all], 編譯器會執行 Editor 中的程式, 在下方會有一個 Message window 顯示執行結果, 若無錯誤, Message window 會有以下顯示:

圖-8 Message window 的 built successfully 表示程式沒有問題

  請你將今次程式中的顯示文字作以下更改, 留意這是漏了第一個 " 字符:

cprintf( Hello, World ! \n \r") ;

  請你在功能列的 [Compiler] 下選 [Rebuild all], 編譯器執行這程式時發現錯誤, 會有一列的錯誤訊息顯示, 最後一項是 Return code: 1, 表示錯誤, 請看下圖:

圖-9 Message window 的錯誤訊息顯示

 

 

6. 造出程式檔

  請你改正上段的錯誤, 然後進行造出程式的程序, 在功能列的 [compiler] 下有三個選擇:

1. [Compile] (編譯):
  這是將原始檔案 (demo1.c) 進行編譯, 得出一個 demo1.obj 檔案, 這只是一個中途檔, 所以沒有實際用途。假若你只是想看看原始檔案是否有錯的語法, 可選這項, 這不會真的造出程式。

2. [Make]:
  整個編寫的程式工作是一個 project (專案), 這可能由多個程式檔案組成, [Make] 只會將曾經變動過的程式檔案進行編譯, 連同以前已編譯但未曾變動過的檔案合併成一個程式, 今次例子只有一個程式檔案, 所以 [Make] 與 [Rebuild all] 作用一樣。

3. [Build all] (建立):
  這用來將全部有關的檔案進行編譯, 得出一個程式檔案。在今次例子, 留意其中一句有 conio.h 這名稱, 這是程式庫中用來控制輸入/輸出的檔案, 編譯出來的 demo1.obj 要與 conio.h 的功能合併, 才能得出完整的 demo1.exe 程式。

  請你在 [Compiler] 下選 [Rebuild all], 在 d:\studyC1\lcc 目錄中就會出現 study1.exe 程式檔案。

 

 

7. 試用

  今次造出來的 study1.exe 是 DOS 程式, 請你開啟「MS-DOS 模式」, 可能會有這提示號: C:\Windows>, 請依以下程序去到 D:\studyC1\lcc 目錄 (DOS 指令不分大小寫)。

C:\Windows> cd .. (鍵入 cd .. 會退上一層目錄, 提示號變為 C:\>。)
C:\> d: (鍵入 d: 會到達 D:\ 目錄, 提示號變為 D:\>。)
D:\> cd studyC1\lcc (鍵入 cd studyC1\lcc 會轉去這目錄, 提示號變為 D:\studyC1\lcc>, 在這處你應找到 study1.exe 這程式。)
D:\studyC1\lcc> stuyd1 (鍵入 study1 的檔案名稱會使 DOS 執行這程式。)

  請你在 D:\studyC1\lcc> 後鍵入 study1, study1.exe 就會執行, 若畫面出現 Hello, World ! 這句, 表示你已成功用 C 語言造出一個程式。

天地 导航仪_e陆航车载导航仪_任我游导航仪升级_ 导航仪车载支架_e路航导航仪支架_导航仪支架安装_ 最全导航仪_e路航导航仪排行榜_车载导航仪排行榜_ 陆航汽车导航仪_e路航汽车导航仪_导航仪 位置_ 导航仪安装软件_导航仪软件升级_车载导航仪软件_ 导航仪升级方法_e路航导航仪的使用_汽车导航仪使用_ 导航仪是免升级的吗_汽车导航仪要钱吗_e路航导航仪好不好_ 导航仪使用说明_陆航车载导航仪_陆航导航仪_ 天地行导航仪_平安行导航仪_任我游1300e导航仪_ 纽曼导航仪说明书_导航仪说明书_e路航导航仪说明书_ e路航导航仪系统_导航仪系统软件_导航仪升级要钱_ 导航仪 车载冰箱_车险 导航仪_导航仪 注意_ 车载导航仪的作用_导航仪的作用_导航仪送电脑_ 车载导航仪倒车_导航仪 倒车雷达_导航仪 倒车后视_ 导航仪操作视频_导航仪 视频输入_车载导航仪视频_ 汽车导航仪选购_新凯越车载导航仪_新凯越导航仪_ 凯美瑞车载导航仪_凯美瑞汽车导航仪_丰田凯美瑞导航仪_ 车载导航仪游戏下载_导航仪游戏_手机语音导航仪下载_ 电子导航仪_卡仕达车载导航仪_别克新君威导航仪_ 新科最新导航仪_新航线导航仪升级_hankook导航仪升级_ 路通导航仪_e路通导航仪怎么用_e路通导航仪地图_ 导航仪支架_任我游手机导航仪_诺基亚导航仪_ 全速 导航仪升级_全速导航仪_全速行导航仪_ 导航仪怎样连接电脑_导航仪怎样充电_导航仪怎样升级_