VS Code + C++ 完全上手
1. 簡略教程
VS Code 本身不會編譯程式,它只是個編輯器。要能跑 C++,你得湊齊三樣東西:
一、裝 VS Code,再在裡面裝一個叫 C/C++ 的擴充套件(Microsoft 出的那個)。
二、裝編譯器。Windows 用 MSYS2,macOS 用 Xcode 命令列工具或 Homebrew。裝完要把它加進 PATH。
三、用「開啟資料夾」開一個資料夾(不是直接開單一檔案),建 test.cpp,按右上角的 ▶。
三樣缺一個都跑不起來,而且錯誤訊息通常不會告訴你缺的是哪一樣。
2. 安裝 VS Code
官網是 code.visualstudio.com。首頁那顆大大的下載鈕會自動判斷你的系統,直接按就對了。
注意不要下載到 Visual Studio,那是另一個軟體。你要的是名字裡有 Code 的那個。
安裝過程只有一頁要看
Windows 的安裝檔跑起來一路按 Next,只有 Select Additional Tasks(選擇附加工作) 這一頁值得停下來。這頁決定的是以後開檔方不方便,勾什麼都不影響 VS Code 能不能用——但五個全部勾起來,後面幾章會少踩幾個坑。
Additional icons:
Other:
五個裡面最值得勾的是資料夾的右鍵選單那一條。VS Code 寫 C++ 要用「開啟資料夾」而不是直接開單一檔案(第 7 章會解釋為什麼),勾了之後就能在檔案總管對著題目資料夾按右鍵直接開。Add to PATH 括號寫的 requires shell restart,跟第 5 章結尾要你把終端機全部關掉重開是同一回事。
已經照預設裝好了不用重裝。把同一個安裝檔再跑一次,就會回到這一頁讓你改。
macOS 沒有這一頁。下載到的是 .zip,解開後把 Visual Studio Code 拖進「應用程式」資料夾就完成了。
裝完打開之後是空白的歡迎畫面。先別急著寫程式,還缺兩樣東西。
3. 安裝 C/C++ 擴充套件
擴充套件(extension)就是外掛。VS Code 本身不懂 C++,要靠這個外掛才會有語法提示、才會出現那顆執行鈕。
按 Ctrl+Shift+X(macOS 是 Cmd+Shift+X)打開擴充套件面板,在搜尋框打 C++。
要認的是發行者那一行。滑鼠移到套件上會冒出說明,寫著 This publisher has verified ownership of microsoft.com 的才是官方那一個。
麻煩的是,搜尋結果會跳出一大堆名字很像的東西。
✓ 就是這個。發行者要看到 Microsoft。語法提示、錯誤標示、那顆執行鈕,全都靠它。
△ 這也是 Microsoft 的,裡面就包含上面那個,所以裝它也能用。只是它同時塞了 CMake 之類你現在用不到的工具。想單純一點就裝上面那個。
✕ 這是另一個開發者做的一鍵執行工具,很多教學會用它。但它只管執行,不會幫你看語法。這頁全程用官方那個,你不需要裝它。
✕ 搜尋結果還有很多語法上色、格式化之類的套件,發行者不是 Microsoft,都不是你現在需要的。等你用熟了再自己挑。
按下 Install,等它跑完就好。裝好之後打開任何 .cpp 檔,右上角就會出現一個 ▶ 播放鈕——那是後面的重點。
4. 安裝編譯器
編譯器負責把你寫的 C++ 翻譯成電腦看得懂的東西。VS Code 沒有內建,要另外裝。這一步最花時間,但只做一次。下面分 Windows 和 macOS,看你自己那邊就好。
用 MSYS2 裝 g++
競程建議使用 MSYS2 + GCC(g++)。
到 msys2.org 下載安裝檔,執行它,一路 Next。安裝資料夾用預設的 C:\msys64 就好,但要記住這個路徑,下一章會用到。
裝到最後,畫面上會有一個 Run MSYS2 now 的勾選框,保持勾選再按 Finish。它會幫你打開一個黑底的終端機視窗。
在那個視窗裡貼上這一行,按 Enter:
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
接下來它會問兩次話:
- 問你要裝這一組裡的哪幾個套件 → 直接按 Enter,代表全部都裝。
- 問 Proceed with installation? [Y/n] → 打 Y 再 Enter。
然後就是等,這一包有好幾百 MB,不要中途關掉。跑完之後這個 MSYS2 視窗就可以關了。
本教學適用 Windows 10 / Windows 11,統一使用 MSYS2 的 UCRT64。下一章要加進 PATH 的路徑固定是 C:\msys64\ucrt64\bin。
先看看你是不是已經有了
打開「終端機」(在「應用程式 → 工具程式」裡,或用 Spotlight 搜尋 Terminal),輸入:
clang --version
有跑出版本號就代表已經有編譯器了。沒有的話輸入這行,會跳出視窗請你安裝 Apple 的命令列工具:
xcode-select --install
競賽的話,還要多裝一個 g++
Mac 內建的是 clang,它沒有 bits/stdc++.h。競賽題解幾乎都用它一次引入所有函式庫,所以你會需要 GNU 的 g++。用 Homebrew 裝:
brew install gcc
還沒有 Homebrew 的話,先跑這一行裝 Homebrew(會問密碼,打你的開機密碼,打字時畫面不會有反應是正常的):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
裝完之後指令不叫 g++,而是帶版本號的 g++-15(數字會隨版本改變,之後可能是 g++-16)。用這行確認,順便記下你的版本號:
g++-15 --version
Homebrew 通常會自己把路徑設好。如果這行說找不到指令,照 Homebrew 安裝完最後印出來的那幾行指示做一次。
macOS 到這裡就可以跳到第 6 章了。下一章的 PATH 設定是 Windows 專屬的。
5. 設定 PATH 環境變數(Windows)
上一章安裝的 g++ 位於 C:\msys64\ucrt64\bin。PATH 是作業系統用來尋找可執行檔的資料夾清單,此路徑預設不在其中,必須手動加入。未完成這一步,後續按 ▶ 會失敗。
這是整頁最多人卡住的地方。MSYS2 明明裝好了、檔案也在硬碟裡,VS Code 就是說找不到——因為這份清單沒加。
① 在 Windows 搜尋列找設定
點左下角的搜尋,打 environment,選 Edit environment variables for your account(第一個,帳戶的,不是系統的)。
中文版 Windows 打「環境變數」也找得到,選有「您的帳戶」那一個。
② 在「使用者變數」找到 Path,按 Edit
上半部那一區是使用者變數(User variables)。點選裡面那一列 Path,然後按 Edit。
下半部還有一區「系統變數」,也有一個 Path,這次不用動它。
③ 按 New,貼上路徑
按 New,會多出一列空白,貼上:
C:\msys64\ucrt64\bin
不要改到別人那幾行,只是多加一行。
④ 一路按 OK,然後全部關掉重開
按 OK,回到上一個視窗再按一次 OK。兩個視窗都要按到關掉,改動才會存進去。
接下來這件事一定要做:把所有開著的 VS Code、命令提示字元、PowerShell 全部關掉重開。
已經開著的程式讀的是舊的 PATH,不重新啟動就讀不到新加的路徑。
確認安裝結果
重開之後,開一個新的命令提示字元(搜尋 cmd),依序打這兩行:
gcc --version
g++ --version
不想用搜尋的話,在左下角開始鈕上按右鍵,選單裡也有 Terminal:
指令打進去長這樣(這裡開的是 PowerShell,跟命令提示字元一樣可以):
兩行都要吐出版本號。有一行說找不到指令,代表 PATH 沒設好,或是上一章的 pacman 沒跑完。
6. 主畫面區域介紹
先認得名字,之後看教學或問人才講得清楚。平常你只會用到編輯區和下面的終端機。
點上面任一塊,這裡會告訴你它是什麼
五塊都點過就完成了。用 Tab 鍵也可以移動、按 Enter 選取。
7. 開啟資料夾與工作區
VS Code 有一個跟一般編輯器很不一樣的觀念:它是以資料夾為單位工作的。那個資料夾叫「工作區」。
你在裡面按 ▶ 之後,VS Code 會把「怎麼編譯這個專案」的設定寫成檔案,存在資料夾裡一個叫 .vscode 的地方。沒有資料夾,它就無處可存。
很多人習慣在檔案總管裡對著 .cpp 按右鍵「用 VS Code 開啟」。這樣只開了一個孤零零的檔案,沒有工作區。按 ▶ 之後行為會很怪:可能沒反應、可能每次都重問你要用哪個編譯器、設定也存不起來。
正確做法:先在硬碟上建一個資料夾(例如 C:\cpp),然後在 VS Code 裡選 File → Open Folder 打開它,之後所有的 .cpp 都放進去。
第一次開資料夾,VS Code 會問一句 Do you trust the authors of the files in this folder?(你信任這個資料夾裡的檔案作者嗎)。自己建的資料夾就選 Yes, I trust the authors。
8. 建立並執行第一支程式
① 建一個 test.cpp
滑鼠移到側邊欄「Explorer」那一列,右邊會冒出幾個小圖示,第一個是新增檔案。按它,打上檔名 test.cpp 再按 Enter。
副檔名 .cpp 要自己打,不打的話 VS Code 不知道這是 C++,不會上色也不會出現 ▶。
② 貼上這段程式
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << (a + b) << '\n';
return 0;
}
貼完按 Ctrl+S 存檔。分頁標題上那個白色小圓點消失,就代表存好了。
字有顏色代表 VS Code 認得這是 C++;一片灰白的話,檢查檔名是不是漏了 .cpp。
③ 按右上角那顆 ▶
編輯區右上角那顆播放鈕就是「編譯並執行」。旁邊那個小三角形是下拉選單,平常用不到。
沒看到這顆鈕的話:不是 C/C++ 擴充沒裝,就是你現在開的檔案不是 .cpp。
④ 第一次會問你要用哪個編譯器
上面會滑下一張清單。選寫著 C/C++: g++.exe build and debug active file 的那一個,並確認它底下顯示的路徑是 C:\msys64\ucrt64\bin\g++.exe。
其他幾個要避開:gcc.exe、(gdb) Launch、(Windows) Launch。
macOS 上看到的會是 clang++ 或 g++-15 開頭。這個清單只會問一次,之後它會記在 tasks.json 裡。
編譯成功的話,下方的終端機會自己跳出來,游標停在那裡等你輸入。這支程式要讀兩個數字,所以它在等你打字——下一步在第 10 章。
跑完之後回頭看側邊欄,資料夾裡多了一個 .vscode,裡面有 tasks.json。那是 VS Code 幫你寫的「編譯指令說明書」,下一章要動它。
另一種做法:在終端機自己編譯
終端機是一個打指令的地方:你打一行文字、按 Enter,電腦就做一件事。它在 VS Code 下面那一塊。
按 Ctrl+` 開關它,那顆鍵在鍵盤左上角、數字 1 的左邊。找不到就用上面的選單 Terminal → New Terminal。它預設就停在你開的那個資料夾。
編譯打這行:
g++ -std=c++17 -O2 -Wall -Wextra -Wconversion test.cpp -o test
然後執行它。Windows 打 ./test.exe,macOS 打 ./test。
參數很長,直接按程式碼框右上角的複製鈕貼進終端機就好,不用手打。每個參數是什麼意思,第 9 章有一張表。
幾個一定會用到的操作:
- 按 ↑ 方向鍵叫回上一個指令,再按 Enter 就重跑一次。所以那行 g++ 只要打一次,之後改完程式按 ↑ 再 Enter 就好。連按 ↑ 會往更早的指令翻,↓ 往回翻。
- 貼上是 Ctrl+V。
- 程式停不下來時,按 Ctrl+C 中斷它。
9. 設定編譯參數
VS Code 自動產生的那份 tasks.json 沒有指定 C++ 標準,也沒開最佳化和警告。沒指定的話,g++ 用的是它自己的預設值,而這個預設值會隨版本改變(新版是 C++20),跟評測系統不見得一樣。本機編得過的寫法,送上去可能直接編譯失敗,你在自己電腦上還看不出來。把標準寫死,兩邊才會一致。
在側邊欄展開 .vscode,點開 tasks.json。你會看到類似這樣(不用全部看懂,只要找到 args 那一段):
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
]
args 就是傳給編譯器的參數,一行一個,順序有意義:
| 參數 | 意思 |
|---|---|
| -fdiagnostics-color=always | 錯誤訊息用顏色印出來,比較好讀。 |
| -g | 編譯時附帶除錯資訊。保持原樣就好。 |
| ${file} | 你目前打開的那個檔案。 |
| -o 和後面那串 | 編譯出來的執行檔要叫什麼、放哪裡。 |
少了什麼?沒有任何一行在說要用哪個版本的 C++。
"args": [
"-fdiagnostics-color=always",
"-std=c++17",
"-O2",
"-Wall",
"-Wextra",
"-Wconversion",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
把原本的 args 整段換成上面這樣。每一行都要有雙引號、結尾都要有逗號,這是 JSON 的規矩,少一個就整份壞掉(壞掉的話 VS Code 會在那一行畫紅線給你看)。存檔之後再按一次 ▶ 就生效。
貼進去縮排跑掉不用管,按 Shift+Alt+F(macOS 是 Shift+Option+F)會自動排整齊,也可以在編輯區按右鍵選 Format Document。VS Code 內建這個功能,不用另外裝東西。
但它只整理縮排,不會幫你補漏掉的逗號或引號——真的少了一個,那一行會被畫紅線,排版指令也排不動。
tasks.json 是這個資料夾專屬的,不是全域設定。換一個新資料夾寫下一題,第一次按 ▶ 會產生一份全新的預設設定,這些參數要再改一次。
想省事就把題目都放同一個資料夾,或是改用第 8 章那條終端機指令——它不吃 tasks.json,在哪個資料夾都一樣。
| 新加的參數 | 做什麼 |
|---|---|
| -std=c++17 | 用 C++17 的規則。APCS 與資訊學科能力競賽公告的環境都是這個版本。 |
| -O2 | 開啟編譯最佳化,程式跑得比較快。競賽平常都開著。 |
| -Wall、-Wextra | 把常見的可疑寫法念出來,例如變數宣告了沒給初始值、函式忘記回傳值。 |
| -Wconversion | 數字型別偷偷被轉換時提醒你。這類問題最容易讓答案默默算錯。 |
警告不會擋住編譯,程式照樣跑得起來。但它們常常就是答案算錯的原因,別直接無視。
-O2 會讓編譯器重排你的程式碼。哪天你要用除錯器單步追蹤、卻發現行號跳來跳去,把 -O2 那行暫時拿掉就好。
改完存檔,你的 tasks.json 會長這樣:
競程建議編譯環境:GCC + C++17。不管你用 VS Code、Code::Blocks,還是自己開終端機打指令,參數都是這一組:
-std=c++17 -O2 -Wall -Wextra -Wconversion
macOS 更要做這一步。clang++ 不指定 -std 時一樣是用它自己的預設值,而那個預設值也會隨版本改變。把標準寫死,本機跟評測系統才會一致。
這組參數是照哪裡定的
不是我們自己挑的,是照學生實際會考的環境定的。資訊學科能力競賽決賽公告的競賽環境:
① 比賽語言支援到 C++17,② 編譯器是 GCC / G++ 11.4.0。APCS 公告的檢測環境同樣是 C++17,指令寫 g++ -g -O2 -std=c++17 -static -lm。
這些環境之後改版,這裡的參數也要跟著改。自己去官方那一頁看最準。
資料來源:114 學年度資訊學科能力競賽決賽「競賽環境」、APCS 官網「系統環境」,2026-09-04 查證。
10. 測試資料輸入與 EOF
按 ▶ 之後,程式的輸出會出現在下方的終端機,你要餵給程式的測資也是打在同一個地方。滑鼠點一下終端機再打字。
如果你的程式是「一直讀到沒東西為止」,像這樣:
#include <bits/stdc++.h>
using namespace std;
int main() {
int x, sum = 0;
while (cin >> x) sum += x;
cout << sum << '\n';
}
你把測資打完、按了 Enter,程式還是不動。因為它不知道你打完了。這時候要送一個叫 EOF 的訊號,意思是「輸入到此為止」:
Windows:按 Ctrl+Z,再按 Enter。(畫面上會先出現 ^Z)
macOS:按 Ctrl+D。(不用再按 Enter)
想清空被輸出灌滿的終端機,在裡面打 cls(Windows)或 clear(macOS)。
11. 常用快捷鍵
12. 建議調整的設定
都在同一個地方:按 Ctrl+,(macOS 是 Cmd+,)打開設定,然後在最上面的搜尋框打關鍵字。
在設定裡搜尋 font size,找到 Editor: Font Size。
覺得字太小就調大,不改也完全沒差。這一項純粹看個人。
在設定裡搜尋 files.encoding,設成 UTF-8。
沒設的話,程式裡的中文(例如 cout << “答案是”;)跑出來會變成一堆亂碼。
右下角狀態列也會顯示目前這個檔的編碼,點它可以單獨改某一個檔。已經變成亂碼的舊檔救不回來,重打比較快。
在設定裡搜尋 extension recommendations,把 Extensions: Ignore Recommendations 打勾。
VS Code 三不五時會在右下角跳出「要不要裝這個外掛」的通知,寫題寫到一半跳出來很煩。勾了就安靜了。
extensions.ignoreRecommendations
13. 常見問題排除
照著做仍然無法執行時,先檢查下面三種情況。
'g++' is not recognized as an internal or external command,
operable program or batch file.
或是 macOS 上的 command not found: g++-15。
意思是系統照著 PATH 那份清單找過一遍,沒有叫 g++ 的東西。
依序檢查三件事:
- PATH 到底加了沒?回第 5 章重看一次,注意是使用者變數那一區。
- 路徑有沒有打錯?C:\msys64\ucrt64\bin,是 ucrt64 不是 mingw64(除非你裝的是舊版那包)。可以先用檔案總管打開這個資料夾,確認裡面真的有 g++.exe。
- 有沒有把 VS Code 完全關掉重開?這是最常見的答案。不是關視窗,是整個程式結束再開。
編輯區右上角根本沒有那顆 ▶,或按了什麼事都沒發生。依序確認:
- C/C++ 擴充裝了嗎?按 Ctrl+Shift+X,搜尋 C++,看 Microsoft 那個是不是顯示已安裝。(第 3 章)
- 現在開的檔案是 .cpp 嗎?看右下角狀態列,最右邊應該寫著 C++。如果寫 Plain Text,代表檔名沒有 .cpp。
- 你是用「開啟資料夾」進來的嗎?看側邊欄,如果寫著沒有開啟資料夾,就是這個問題。(第 7 章)
程式裡的中文印出來變成 §~à 這種東西。
點右下角狀態列的編碼可以改這一個檔;要一勞永逸就照第 12 章設 files.encoding。
在終端機自己打指令編譯,結果 -Wall 沒念、C++17 的語法也編不過——因為手動打指令不會去讀 tasks.json。
tasks.json 只有在你按 ▶(或用 VS Code 的 Build Task)的時候才會被套用。你自己在終端機打:
g++ p1.cpp
等於什麼參數都沒加。要跟 ▶ 一致,就得自己把參數打完:
g++ -std=c++17 -O2 -Wall -Wextra -Wconversion p1.cpp -o p1
比賽現場或別人的電腦上沒有你的 tasks.json,這串要背得起來。
14. 重點回顧
15. 隨堂測驗
第 1 題 VS Code 自己會不會編譯 C++?
第 2 題 搜尋 C++ 之後,該裝哪一個擴充套件?
第 3 題 MSYS2 裝完之後,還要做什麼 VS Code 才找得到 g++?
第 4 題 為什麼要用「開啟資料夾」而不是直接開 .cpp 檔?
第 5 題 第一次跑完之後,tasks.json 裡最該補上哪一行?
第 6 題 在終端機貼完測資按了 Enter,程式卻沒反應,為什麼?
安裝過程卡住了?到 Discord 的 AA 競程 伺服器私訊 Anna 老師。
選單路徑、UI 文字與快捷鍵依 VS Code 官方文件撰寫,不同版本可能略有不同