國立屏東大學 資訊工程學系 C++程式設計入門教材
本書的範例程式除特別說明以外,全部都可以在Linux、MacOS及Microsoft Windows等作業系統上編譯與執行,本附錄將分別針對這些作業系統上如何編譯與執行範例程式進行說明,其中在Microsoft Windows的部份,我們會示範如何使用Dev-C++進行範例程式的編譯與執行;至於在Linux與MacOS的部份,則是以Console模式(或稱為命令行介面,Command Line Interface)的終端機(Terminal)做為示範。如果要使用其它的開發工具或軟體進行程式開發,可參考本書附錄其它開發環境與工具的相關介紹。
要提醒讀者注意的是,本附錄僅就範例程式的編譯與執行進行說明,至於如何在作業系統準備好C++語言的開發環境,則請參考本書開發您的第一個<nowiki>C++</nowiki>程式節的說明,其中針對Windows作業系統裡的Dev-C++的下載與安裝,請參考在Windows上開發<nowiki>C++</nowiki>程式小節的說明;Linux作業系統方面請參考在Linux上開發<nowiki>C++</nowiki>程式,MacOS系統請參考在MacOS上開發<nowiki>C++</nowiki>程式。
為便利說明起見,本附錄的示範都將以第2章的Example 1(檔名為hello.cpp)程式為例。假設讀者將本書的範例程式下載並解壓縮於「C:\Examples」裡,如此一來你將可以在「C:\Examples\ch2」裡找到「hello.cpp」這個檔案:
C++</nowiki>程式 hello.cpp > /* Hello, <nowiki>C++</nowiki>! */ // This is my first <nowiki>C++</nowiki> program #include <iostream> using namespace std; int main() { cout << "Hello, <nowiki>C++</nowiki>!" << endl; return 0; }
本書所有的程式範例(除特別說明以外),全部都可以在Windows作業系統裡使用Dev-C++進行編譯與執行,建議讀者可以將本書範例程式下載並解壓縮到「C:\Examples」(或其它你偏好的目錄裡),以便利未來的使用。
要特別注意的是,儘管使用Dev-C++執行範例程式的結果會顯示在「命令提示字元」視窗裡,但為了便利起見,本書在說明範例程式的執行結果時,筆者將僅擷取在「命令提示字元」視窗裡的「文字執行結果」來代替整個視窗的截圖。例如figure 6的執行結果,將會改以下面的文字內容代替:
Hello, <nowiki>C++</nowiki>!
你應該會發現這種顯示的方式與原本figure 6所呈現的內容完全相同,但是卻更為簡潔,能夠讓我們更專注於範例程式的執行結果。當然,這種只擷取「文字執行結果」的方式與截圖還是有一點小差異 – 在視窗中的最後一行的「按任意鍵結束…(Press any key to continue…)」這句話不見了!可是這完全不會造成任何問題,那句話本來就不屬於程式的執行結果,它只是Dev-C++用來提示我們如何關閉命令提示字元視窗的訊息而已,和範例程式的執行結果完全無關。
我們已經使用Dev-C++示範了Example 1的hello.cpp程式的開發與執行過程,建議讀者依照前述的步驟實際進行一遍,以掌握Dev-C++的使用方式。最後,我們將Dev-C++時常會用到的「編譯」、「執行」、「編譯並執行」以及「全部重新建置」等常用的功能,特別為讀者歸納其操作方法:
本書有部份的範例程式在編譯時,需要設定相關的參數才能正確編譯,例如部份範例使用到C++11標準的語法,因此必須在編譯時加上「-std=gnu++11」或「-std=C++11」的參數才行。讀者可以透過Dev-C++選單中的「工具(Tools)>編譯器選項(Compiler Options)」來設定相關的編譯器參數,請參考figure 7:
記得要勾選「Add the following commands when calling the compiler.」選項,並在下的文字輸入區域內輸入所要加入的編譯器參數,例如在figure 7加入了「-std=C++11」的參數。新增(或修改)完參數後,只要按下「OK」,下次編譯程式時就會發生作用。
事實上,如果時常有需要變更「編譯器參數」的需求時,使用本小節的方法並不是很方便,建議讀者可以改用下一小節的方法,直接在「命令提示字元(Command Prompt)」裡執行編譯器指令並給定其所需的參數,這樣會更為便利。
由於Dev-C++的安裝內含了TDM-GCC編譯器 – 相容於Windows作業系統的GCC編譯器分支,因此我們也可以在Windows的命令提示字元視窗裡,使用「指令」來完成範例程式的編譯與執行。當然,你仍然可以在Dev-C++裡完成這些工作,此處的目的僅是為讀者提供額外的操作方法而已。
以下的說明皆假設Dev-C++是安裝在預設的「C:\Program Files (x86)\Dev-Cpp」目錄之下,若你將Dev-C++安裝在不同的目錄,請自行將本節的內容進行相關的修改。
TDM-GCC預設會被安裝在Dev-C++的安裝目錄下的「MinGW64\bin」裡(意即C:\Program Files (x86)\Dev-Cpp\MinGW64\bin),請讀者先將TDM-GCC編譯器所在的目錄加入到Windows系統的PATH環境變數裡,以便利未來的使用。以Windows 11為例,你可以透過「控制台>系統及安全性>系統>系統資訊>進階系統設定>環境變數」來將環境變數的編輯視窗叫出,請參考figure 8:
請依需求選擇編輯「自己的使用者變數」或「系統變數」裡的PATH1),按下編輯以開啟如figure 9的對話窗,按下「新增」按鈕並加入「C:\Program Files (x86)\Dev-Cpp\MinGW64\bin」將TDM-GCC所在的目錄新增到PATH裡。
完成上述設定後,你就可以在任何目錄裡直接下達「C++」或「g++」指令(TDM-GCC的C++編譯器的檔名),來進行C++程式的編譯了。請打開「命令提示字元(Command Prompt)」並依下列步驟操作:
我們將以上的步驟以Example 1的hello.cpp為例,彙整示範如figure 10所示:
從figure 10中可看出,預設的可執行檔(a.exe),可以用「a」或「a.exe」來加以執行;同樣的,若使用「-o hello」做為參數,則其所產生的可執行檔將會是「hello.exe」,可使用「hello」或「hello.exe」加以執行。
最後,本書其實會擷取編譯及執行結果的「文字內容」,來代替命令提示字元視窗的截圖,請參考以下的編譯及執行結果的「文字內容」:
C:\>CD C:\Examples\Ch2 C:\Examples\Ch2><nowiki>C++</nowiki> hello.cpp C:\Examples\Ch2>a Hello, <nowiki>C++</nowiki>! C:\Examples\Ch2>a.exe Hello, <nowiki>C++</nowiki>! C:\Examples\Ch2><nowiki>C++</nowiki> hello.cpp -o hello C:\Examples\Ch2>hello Hello, <nowiki>C++</nowiki>! C:\Examples\Ch2>hello.exe Hello, <nowiki>C++</nowiki>! C:\Examples\Ch2>
如此一來,不論文字指令與執行結果,比起截圖更容易看得更為清楚。
由於MacOS源自BSD,它和Linux系統一樣都是衍生自Unix作業系統,因此在MacOS和Linux作業系統裡都可以使用終端機(Terminal)來進行程式的編譯與執行,本附錄將這兩種作業系統一同進行說明。
假設Example 1的hello.cpp被下載於「~/examples/ch2」目錄裡,請開啟一個「終端機(Terminal)」視窗,並依下列步驟操作:
我們將以上的步驟以Example 1的hello.cpp為例,彙整如下:
[user@urlinux ~]$ cd ~/examples/ch2 [user@urlinxu ch2]$ <nowiki>C++</nowiki> hello.cpp [user@urlinux ch2]$ ./a.out Hello, <nowiki>C++</nowiki>! [user@urlinux ch2]$ <nowiki>C++</nowiki> hello.cpp -o hello [user@urlinux ch2]$ ./hello Hello, <nowiki>C++</nowiki>! [user@urlinux ch2]$