# 在 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 檔案。VSC 可以偵測一些常用的編譯器,但無法偵測到 Code::Blocks 所夾帶的 MinGW 版本 (直接安裝的 MinGW 版本可以偵測到)。我們可以直接拿一個現成的設定來修改,建立 .vscode 目錄,並將以下內容存成 .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": "c:\\Program Files\\CodeBlocks\\MinGW\\bin" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "Task generated by Debugger." } ], "version": "2.0.0" } ``` 4. 上述檔案中,各參數的意義可參考以下的說明:https://code.visualstudio.com/docs/cpp/config-mingw 這邊最重要的參數應該是 `command`,也就是編譯器的位置。我們可以先試著找到 Code::Blocks 中 MinGW 的 gcc.exe 的路徑,然後把 `command` 的值改成正確的路徑即可。另外,options 裡面的 cwd 的值要放 gcc.exe 所在的路徑。 5. 建立一個新的 C 程式檔案。選擇右上角執行的 ICON (三角形,左下有一隻蟲的圖樣),下拉後選擇 Run C/C++ File,應該會在下方開啟終端機編譯及執行程式。 6. 執行完成後,下方選擇 Terminal 頁籤,如果設定都正確的話,應該就會看到執行結果。 7. 我們也可以進行程式的除錯。除錯時,VSC 會將除錯的相關設定儲存在 .vscode 子目錄的 launch.json 檔案。我們可以修改以下的內容,並存到 .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 相同的目錄中。 8. 用滑鼠在程式碼行號左邊點擊滑鼠,就會設定中斷點。接著用右上角執行的 ICON,下拉後選擇 Debug C/C++ File,看是否進入除錯模式。 ## GitHub Copilot 想要免費使用 GitHub Copilot 的同學: 1. 先至 https://education.github.com/discount_requests/application 申請學生專案的 GitHub 帳號。 2. 在 VSC 中安裝 GitHub Copilot 套件。 `CTRL+SHIFT+P` Command Palette, Welcome