# 在 Visual Studio Code (VSC) 中寫 C/C++ 程式 ## 目的 - VSC 是目前許多程式開發者使用的工具,具有非常好的功能,以及很多擴充套件可以使用,適合用來開發各種程式語言或文字編輯。它提供整合的開發環境,包括程式碼自動補全、程式碼說明與除錯等各種功能,可以提高開發效率。 - 在 VSC 中使用 GitHub Copilot,可以透過生成式 AI,根據上下文自動生成程式碼,減少重複的編碼工作,讓使用者可以更專注於解決問題的邏輯,並加快程式學習與開發的速度。 - 在 VSC 中直接編輯 Markdown 文章,可以即時查看文章的渲染效果,同時也支持 LaTeX 數學公式的編寫,非常適合用來撰寫技術文檔或學習筆記。 ## 環境建立 1. VSC 下載及安裝 1. 從 VSC 官網 https://code.visualstudio.com 下載及安裝 VSC。 2. 在 VSC 中安裝以下套件: - C/C++ - Markdown All in One - Paste image 3. 打開 VSC,在 File 選單中,選擇 Add Folder to Workspace...,選擇或建立一個新的目錄,做為我們的工作目錄。 2. 編輯 Markdown 文章 1. 新增一個 report.md 檔案,用來撰寫學習記錄。 2. 使用簡單的 Markdown 語法撰寫文稿。 3. 圖形的處理,可用 `Win+Shift+S` 熱鍵截圖,用 `CTRL+ALT+V` 熱鍵貼圖 (Paste image 套件提供的功能),貼上之後,會自動產生圖檔及連結。 3. 建置 C/C++ 執行環境 1. C/C++ 程式必須先編譯成執行檔才能執行,因此需要有 C 的編譯器。 2. 因為我們之前使用 Code::Blocks 的時候已經安裝過編譯器,因此我們打算使用已安裝的編譯器。如果想要安裝其他的編譯器,可以參考以下連結: https://code.visualstudio.com/docs/cpp/introvideos-cpp 3. VSC 在編譯及執行程式時,必須知道編譯器的相關設定。這些設定會儲存在 VSC 工作目錄中的 .vscode 子目錄的 tasks.json 檔案。 4. VSC 可以偵測到一些常用的編譯器,但無法偵測到 Code::Blocks 所夾帶的 MinGW 版本,但只要我們把 MinGW 執行檔的位置加到 PATH 環境變數,VSC 也可以找得到我們的編譯器,並自動產生 tasks.json 檔案。 5. 打開 Windows 的設定程式,直接尋找「變數」,選擇「編輯您的帳戶的環境變數」。接下來在使用者變數中選擇「Path」,然後按編輯。在跳出的視窗中選擇新增,然後按瀏覽,尋找 MinGW 的位置 (預設值可能是在 "Program Files\CodeBlocks\MinGW\bin" 的位置),找到之後按確定。 6. 設定好 Path 變數之後,我們可以開一個 cmd 視窗,然後在裡面打指令 `gcc --version`,如果看到有版本的訊息,那就表示 Path 變數的設定正確。 7. 接著我們可以建立一個簡單的 C 程式檔案來進行測試。建立一個 hello.c 檔案,裡面隨便寫一個簡單的 C 程式。 8. 接下來我們要建立編譯器的相關設定。由於系統可以偵測到我們的編譯器,所以最簡單的方式,就是直接選擇上方右邊的執行按鈕 (三角形),按一下下拉選單,會看到有 `Run C/C++ File` 和 `Debug C/C++ File`,選擇 `Run C/C++ File` 執行程式。正常情況,VSC 上方應該會跳出選項,讓我們選擇想要使用的編譯器,這時直接選擇我們所使用的 gcc,應該就會正常編譯並執行程式。過程中,下方會跳出幾個視窗,點選 `Terminal` 視窗,應該就會看到執行的結果。 9. 上述步驟完成後,我們也可以打開左邊檔案的面版,會發現 VSC 自動幫我們新增了一個 .vscode 的子目錄,其中會有一個 tasks.json 的檔案,內容大致如下 (設定可能跟系統有關,所以你看到的也許會有一點點差異): ```json { "tasks": [ { "type": "cppbuild", "label": "C/C++: Code::Blocks mingw gcc.exe", "command": "c:\\Program Files\\CodeBlocks\\MinGW\\bin\\gcc.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "Task generated by Debugger." } ], "version": "2.0.0" } ``` 10. 上述檔案中,各參數的意義可參考以下的說明:https://code.visualstudio.com/docs/cpp/config-mingw 11. 另外,我們也可以先設定預設的編譯器,再來編譯和執行程式。要設定預設的編譯器,可以按 `Ctrl+Shift+P` 開啟 Command Palette,在搜尋框中打 welcome,選擇 `Welcome: Open Walkthrough...`,然後選擇 `Get Started with C++ Development`,接下來在跳出的視窗中選擇 `Set up your C++ Environment` 裡面的 `Select my Default Compiler`,然後選擇我們使用的 gcc,這樣也會建立 tasks.json 檔案。 12. 其實我們也可以自己建立 tasks.json 檔案,只要設定是正確的,基本上編譯和除錯應該都沒有問題。 13. 針對程式的除錯,也可以設定更多的參數,包括使用的除錯程式、命令列參數等。VSC 會將除錯的相關設定儲存在 .vscode 子目錄的 launch.json 檔案,其內容大致如下 (可能會因系統不同而有些許差異): ```json { "configurations": [ { "name": "C/C++: gcc.exe build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "c:\\Program Files\\CodeBlocks\\MinGW\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "Set Disassembly Flavor to Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ], "preLaunchTask": "C/C++: gcc.exe build active file" } ], "version": "2.0.0" } ``` 這邊比較重要的是 `miDebuggerPath` 的值,這個值是 gdb.exe 的程式位置,應該是放在和 gcc.exe 相同的目錄中。 14. 用滑鼠在程式碼行號左邊點擊滑鼠,就會設定中斷點。接著用右上角執行的 ICON,下拉後選擇 Debug C/C++ File,看是否進入除錯模式。 ## GitHub Copilot 想要免費使用 GitHub Copilot 的同學: 1. 先至 https://education.github.com/discount_requests/application 申請學生專案的 GitHub 帳號。 2. 在 VSC 中安裝 GitHub Copilot 套件。