我們先看到下面這張圖
原始碼 (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) iostream 的 cout 物件輸出字串到螢幕上。
接下來,我們們會陸續探討 C++ 語言的諸多細節,先來看看基本內建型態 (primitive built-in type) 與物件吧!
中英文術語對照
原始碼 | source code |
程式 | program |
編譯器 | compiler |
編譯 | compile |
型態 | type |
建構函數 | constructor |
字串 | string |
物件 | object |
標準程式庫 | standard library |
基本內建型態 | primitive built-in type |
重點整理
- GCC 為跨平台的編譯器,編譯 C++ 程式的指令為 g++ 。
- C++ 程式編譯成功,會產生系統的執行檔。
- 執行編譯完成的程式,於命令列輸入檔名即可。
問題與討論
- 編譯與直譯的差別在哪裡?編譯的程式語言相較直譯的程式語言有什麼優點及缺點?
- 於 Windows 編譯的執行檔可以拿到 Mac 執行嗎?
練習
- 於命令列重新編譯 demo.cpp ,加上參數 o 與指定輸出檔名。
- 編譯「單元 1 」練習的 demo2.cpp ,並執行程式,比較與 demo.cpp 的編譯執行結果有何不同?
- 同上,改成編譯 demo3.cpp 。
- 同上,改成編譯 demo4.cpp 。
- 同上,改成編譯 demo5.cpp 。
the end
沒有留言:
張貼留言