一.前情
平時用的IDE(整合開發環境)是Dev-Cpp,因為只是學習階段,程式碼還上不了千行,個人認為不需要VS 那種高大全,VC6.0 又有些地方(不只是審美)不順眼。
但最近又發現當把C 程式碼檔案複製到Ubuntu 18.04 編譯運行時,漢字部分總是會亂碼,因為encoding(字元編碼)的問題,Ubuntu只認UTF-8,Windows只認ANSI, Ubtuntu雖然我能讓VIM顯示ANSI,卻做不到讓終端機顯示,而Windows 上的Dev-Cpp 不能設定encoding為UTF-8,所以想改用Notepad 這個Editor(編輯器)增加Compiler (編譯器)的功能。
環境:win7。 Notepad 。 Dev-Cpp。
二.步驟
1. 設定編譯器
change:
勾選“mingw32-gcc-g -bin”的“mark for installation”,選擇右上角“Installation”的“Apply Changes”即可。另外幾項我沒安裝的時候也沒什麼問題,後來出了點別的問題,求保險才裝的。總共裝了不到 400MB。
相關推薦:《Notepad 使用圖文教學》
#2. 編輯環境變數
##控制面板\所有控制面板項目\系統,進階系統設定→環境變量,在“Administrator 的使用者變數”欄位找PATH 變量,無則新建,有則編輯,變數名為“PATH”,變數值在原有的基礎上增加一條“C:\MinGW\bin;”,該值與每個人把MinGW 安裝的位置有關,因人而異。 「;」的意義在於當 PATH 的值有多項時,用它把這些項分開。3. 兩個方法檢查前兩個步驟是否成功
#進入cmd 控制台,輸入gcc -v或g - v查看已加入環境變數中的編譯器版本。顯示黃框中的內容屬於正常,說明前兩步驟成功。 建立一個簡單的 C 原始碼文件,要確保程式碼正確能運作。例如Hello.cpp://Hello.cpp #include<iostream> using namespace std; int main() { cout<<"Hello world, 世界你好!"<<endl; return 0; }在cmd 控制台cd 到該原始碼的目錄,然後執行g Hello.cpp -o Hello.exe,然後執行Hello.exe /k指令,能正常運作也能說明前兩大步沒問題。 前一條指令是用g 編譯器編譯這個原始碼並輸出exe 檔到這個目錄,後一條是執行exe 檔(/k 參數使其運行後停留在程式介面,與之相對的/ c 會使其關閉。即keep 與close 的對比)。前面兩個指令其實可以用「&&」合為一條,也就是g Hello.cpp -o && Hello.exe Hello.exe /k。 到這裡已經成功一大半了,因為如你所見,已經可以在cmd 控制台編譯並運行源代碼了,而賦予Notepad 這個能力,只是讓Notepad 一步“對當前打開的源文件用cmd 執行編譯、執行指令」而已。
4. Notepad 增加執行指令
開啟 Notepad ,按 F5 調出「執行」。複製後面說到的命令,運行即可,建議保存,名稱隨意。 也可以在工具列中找「執行(R)」參考了多個關於Notepad 執行指令和cmd 指令的資料,經過修改後我的命令是cmd /k pushd "$(CURRENT_DIRECTORY)" && g -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & PAUSE & EXIT(無分行,是一整條指令),要理解這條指令的話可以一分為六,即:(1)cmd /k:開啟cmd 控制台,執行完程式讓其停留而不自動關閉。 (2)pushd "$(CURRENT_DIRECTORY)":將工作路徑更換到來源檔案所在的路徑,例如'pushd E:\kkk'相當於cmd 中先e:再cd kkk,這條指令在原始碼要呼叫同目錄檔而只寫了相對路徑時尤為重要。因為 Notepad 的預設工作路徑是它自己的安裝路徑。 (3)g -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)":呼叫環境變數中的編譯器g .exe 來將原始碼編譯成同名exe 檔並輸出到相同路徑。 (4)"$(NAME_PART)".exe:執行原始碼編譯出的執行檔。(5)PAUSE:暫停,提示“按任意鍵繼續”,配合下一條命令實現“按任意鍵關閉”的效果,兩者都沒有的話程序運行完就會秒關。
(6)EXIT:關閉 cmd 控制台,沒有的話按任何鍵會退到 cmd 命令台,等待輸入下一條指令。
·$(CURRENT_DIRECTORY)代表檔案所在目錄的路徑。
·$(NAME_PART)表示該檔案無後綴部分的檔案名稱。
·$(FULL_CURRENT_PATH)代表目前完整的檔案路徑。
·雙引號(半角):用於防止目錄或檔案名稱中含空格的情況。
·“&&”和“&”:前者表示上一條指令正常執行完再執行下一條指令,非正常則不執行下一條;後者無憂無慮。例如一分為六後的後兩個子命令,表示不管原始碼編譯、執行是否成功,都會出現「按任意鍵繼續」字樣,並且按任意鍵後關閉 cmd 控制台。
三. 後續
折騰了接近半天后,發現和 Ubuntu 一樣,只是讓編輯器能顯示 UTF-8,卻做不到控制台顯示。也就是 Notepad 能顯示 UTF-8/ANSI,但執行後 cmd 控制台還是只認 ANSI。
以上是一文了解如何用Notepad++編譯C/C++的詳細內容。更多資訊請關注PHP中文網其他相關文章!