本站電子書

您可以在這些電子書店找到本站電子書: Google Play 圖書iBooks StoreHyReadReadmooPubu
===>>>本站推出學習遊戲意見調查<<<===《如何自學程式設計》入選 Google Play 台灣地區2016年度最佳書籍

C++ 入門指南 V2.00 - 單元 2 - 如何編譯與執行




我們先看到下面這張圖



原始碼 (source code) 檔案就是我們寫程式 (program) 所用的 .cpp 檔案,原始碼檔案經過編譯器 (compiler) 編譯 (compile) 後就是可執行的程式檔案,然後在透過作業系統啟動程式執行。


我們提供的簡單範例的程式原始碼如下


001 // 引入標準程式庫中相關的輸入、輸出程式
002 #include <iostream>
003 // 引入標準程式庫中相關的字串程式
004 #include <string>
005
006 // std 為標準程式庫的命名空間
007 using namespace std;
008
009 int main(void) {
010    // 下面建立名稱為 m , string 型態的物件
011    // 小括弧為 string 的建構子
012    // 雙引號為字串字面常數
013    string m("There is no spoon.");
014
015    // cout 用來輸出的物件
016    // endl 為新行符號 '\n'
017    cout << endl;
018    cout << m << endl;
019    cout << endl << endl;
020
021    // 最後回傳 0 給作業系統
022    return 0;
023 }
024
025 /* 檔名: demo.cpp
026    作者: Kaiching Chang
027    時間: 2014-5 */

我們使用跨平台的編譯器 GCC ,於 Windows 、 Mac 或 Linux 的編譯結果都應一致。命令列編譯原始碼檔案使用命令 g++ ,如下



UNIX-Like 作業系統如 Linux 、 Mac 等都已經預設安裝好 GCC , Windows 或其他未安裝 GCC 的作業系統使用者,請連結到 GCC 的官網,找 Download:Binaries 的地方下載安裝檔。

如果要編譯含有 C++11 的程式碼,需要在打指令時加上 -std=c++0x 的旗標。

編譯完成,相同目錄下會產生 a.out 檔案



a 是預設輸出檔的檔名,多數 UNIX-Like 作業系統預設輸出檔為 a.out , Windows 系統則是 a.exe 。若是要自訂輸出檔名,在 g++ 後要接參數 -o 然後輸出檔名。

然後要在命令列執行,就鍵入 ./a.out 就可以了



Windows 系統打 a 就可以執行,或是在 a.exe 的圖示上快速的點擊兩次。

此程式沒有用到太多 C++ 的特性,僅利用 string 型態 (type) 的建構函數 (constructor) 建立字串 (string) 物件 (object) ,然後利用標準程式庫 (standard library) iostreamcout 物件輸出字串到螢幕上。


接下來,我們們會陸續探討 C++ 語言的諸多細節,先來看看基本內建型態 (primitive built-in type) 與物件吧!


中英文術語對照


原始碼 source code
程式 program
編譯器 compiler
編譯 compile
型態 type
建構函數 constructor
字串 string
物件 object
標準程式庫 standard library
基本內建型態 primitive built-in type

重點整理


  1. GCC 為跨平台的編譯器,編譯 C++ 程式的指令為 g++
  2. C++ 程式編譯成功,會產生系統的執行檔。
  3. 執行編譯完成的程式,於命令列輸入檔名即可。

問題與討論


  1. 編譯與直譯的差別在哪裡?編譯的程式語言相較直譯的程式語言有什麼優點及缺點?
  2. 於 Windows 編譯的執行檔可以拿到 Mac 執行嗎?

練習


  1. 於命令列重新編譯 demo.cpp ,加上參數 o 與指定輸出檔名。
  2. 編譯「單元 1 」練習的 demo2.cpp ,並執行程式,比較與 demo.cpp 的編譯執行結果有何不同?
  3. 同上,改成編譯 demo3.cpp
  4. 同上,改成編譯 demo4.cpp
  5. 同上,改成編譯 demo5.cpp

the end

沒有留言: