VS Code + C++ 完全上手:Windows / macOS 安裝與設定

VS Code + C++ 完全上手

Windows & macOS 零基礎

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 能不能用——但五個全部勾起來,後面幾章會少踩幾個坑。

把五個都勾起來
已勾 3/5
Setup – Microsoft Visual Studio Code (User)

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 的才是官方那一個。

麻煩的是,搜尋結果會跳出一大堆名字很像的東西。

搜尋 C++ 之後,要裝哪一個?
還沒選

✓ 就是這個。發行者要看到 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:

MSYS2 終端機
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\binPATH 是作業系統用來尋找可執行檔的資料夾清單,此路徑預設不在其中,必須手動加入。未完成這一步,後續按 ▶ 會失敗。

新手大坑 ①

這是整頁最多人卡住的地方。MSYS2 明明裝好了、檔案也在硬碟裡,VS Code 就是說找不到——因為這份清單沒加。

四個步驟,照順序做
步驟 1 / 4

① 在 Windows 搜尋列找設定

Windows 搜尋
environment
Edit environment variables for your account Edit the system environment variables

點左下角的搜尋,打 environment,選 Edit environment variables for your account(第一個,帳戶的,不是系統的)。
中文版 Windows 打「環境變數」也找得到,選有「您的帳戶」那一個。

② 在「使用者變數」找到 Path,按 Edit

Environment Variables
User variables for student
OneDrive   C:\Users\student\OneDrive Path   C:\Users\student\AppData\Local\… TEMP   C:\Users\student\AppData\Local\Temp

上半部那一區是使用者變數(User variables)。點選裡面那一列 Path,然後按 Edit
下半部還有一區「系統變數」,也有一個 Path,這次不用動它。

③ 按 New,貼上路徑

Edit environment variable
C:\Windows\system32 C:\Windows C:\msys64\ucrt64\bin ← 新增這一行

New,會多出一列空白,貼上:

要貼的路徑
C:\msys64\ucrt64\bin

不要改到別人那幾行,只是多加一行。

④ 一路按 OK,然後全部關掉重開

OK,回到上一個視窗再按一次 OK。兩個視窗都要按到關掉,改動才會存進去。

接下來這件事一定要做:把所有開著的 VS Code、命令提示字元、PowerShell 全部關掉重開。
已經開著的程式讀的是舊的 PATH,不重新啟動就讀不到新加的路徑。

確認安裝結果

重開之後,開一個新的命令提示字元(搜尋 cmd),依序打這兩行:

命令提示字元
gcc --version
g++ --version

不想用搜尋的話,在左下角開始鈕上按右鍵,選單裡也有 Terminal

指令打進去長這樣(這裡開的是 PowerShell,跟命令提示字元一樣可以):

兩種結果,你會看到哪一種?
C:\Users\student> g++ –version g++ (Rev3, Built by MSYS2 project) 14.2.0 Copyright (C) 2024 Free Software Foundation, Inc. C:\Users\student> gcc –version gcc (Rev3, Built by MSYS2 project) 14.2.0
兩行都吐得出版本號,PATH 設對了。版本號多少沒關係,會隨時間變。

兩行都要吐出版本號。有一行說找不到指令,代表 PATH 沒設好,或是上一章的 pacman 沒跑完。

6. 主畫面區域介紹

先認得名字,之後看教學或問人才講得清楚。平常你只會用到編輯區和下面的終端機。

五個區域都點點看
認識五個區域 0/5
test.cpp — cpp — Visual Studio Code

點上面任一塊,這裡會告訴你它是什麼

五塊都點過就完成了。用 Tab 鍵也可以移動、按 Enter 選取。

7. 開啟資料夾與工作區

VS Code 有一個跟一般編輯器很不一樣的觀念:它是以資料夾為單位工作的。那個資料夾叫「工作區」。

你在裡面按 ▶ 之後,VS Code 會把「怎麼編譯這個專案」的設定寫成檔案,存在資料夾裡一個叫 .vscode 的地方。沒有資料夾,它就無處可存。

新手大坑 ②

很多人習慣在檔案總管裡對著 .cpp 按右鍵「用 VS Code 開啟」。這樣只開了一個孤零零的檔案,沒有工作區。按 ▶ 之後行為會很怪:可能沒反應、可能每次都重問你要用哪個編譯器、設定也存不起來。

正確做法:先在硬碟上建一個資料夾(例如 C:\cpp),然後在 VS Code 裡選 File → Open Folder 打開它,之後所有的 .cpp 都放進去。

兩種開法,側邊欄長得不一樣
cpp — Visual Studio Code
Explorer▾ CPP  ▾ .vscode    tasks.json  test.cpp
✓ 有工作區 — 設定存在 .vscode 裡,之後不會再問你
這才是正確的狀態。資料夾名稱出現在最上面,裡面多了一個 .vscode,VS Code 幫你記住的東西都放在那裡。

第一次開資料夾,VS Code 會問一句 Do you trust the authors of the files in this folder?(你信任這個資料夾裡的檔案作者嗎)。自己建的資料夾就選 Yes, I trust the authors

8. 建立並執行第一支程式

四個步驟
步驟 1 / 4

① 建一個 test.cpp

cpp — Visual Studio Code
Explorer  🗋️ 新增檔案 ▾ CPP   test.cpp

滑鼠移到側邊欄「Explorer」那一列,右邊會冒出幾個小圖示,第一個是新增檔案。按它,打上檔名 test.cpp 再按 Enter。
副檔名 .cpp 要自己打,不打的話 VS Code 不知道這是 C++,不會上色也不會出現 ▶。

② 貼上這段程式

test.cpp
#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

③ 按右上角那顆 ▶

test.cpp
test.cpp▶ ▾ 1#include <bits/stdc++.h> 2using namespace std;

編輯區右上角那顆播放鈕就是「編譯並執行」。旁邊那個小三角形是下拉選單,平常用不到。
沒看到這顆鈕的話:不是 C/C++ 擴充沒裝,就是你現在開的檔案不是 .cpp

④ 第一次會問你要用哪個編譯器

Select a configuration
C/C++: g++.exe build and debug active filecompiler: C:\msys64\ucrt64\bin\g++.exe C/C++: gcc.exe build and debug active filecompiler: C:\msys64\ucrt64\bin\gcc.exe C/C++: (gdb) Launch C/C++: (Windows) Launch

上面會滑下一張清單。選寫著 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 裡。

> ./test

編譯成功的話,下方的終端機會自己跳出來,游標停在那裡等你輸入。這支程式要讀兩個數字,所以它在等你打字——下一步在第 10 章。

跑完之後回頭看側邊欄,資料夾裡多了一個 .vscode,裡面有 tasks.json。那是 VS Code 幫你寫的「編譯指令說明書」,下一章要動它。

另一種做法:在終端機自己編譯

終端機是一個打指令的地方:你打一行文字、按 Enter,電腦就做一件事。它在 VS Code 下面那一塊。

Ctrl+` 開關它,那顆鍵在鍵盤左上角、數字 1 的左邊。找不到就用上面的選單 TerminalNew 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 那一段):

.vscode / tasks.json 自動產生的樣子
"args": [
    "-fdiagnostics-color=always",
    "-g",
    "${file}",
    "-o",
    "${fileDirname}\\${fileBasenameNoExtension}.exe"
]

args 就是傳給編譯器的參數,一行一個,順序有意義:

參數意思
-fdiagnostics-color=always錯誤訊息用顏色印出來,比較好讀。
-g編譯時附帶除錯資訊。保持原樣就好。
${file}你目前打開的那個檔案。
-o 和後面那串編譯出來的執行檔要叫什麼、放哪裡。

少了什麼?沒有任何一行在說要用哪個版本的 C++。

.vscode / tasks.json 改成這樣
"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

按 ▶ 之後,程式的輸出會出現在下方的終端機,你要餵給程式的測資也是打在同一個地方。滑鼠點一下終端機再打字。

如果你的程式是「一直讀到沒東西為止」,像這樣:

sum.cpp
#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. 常用快捷鍵

點卡片翻面看用途
翻開 0/3
真的要記的只有 Ctrl+`,另外兩個知道有就好。

12. 建議調整的設定

都在同一個地方:按 Ctrl+,(macOS 是 Cmd+,)打開設定,然後在最上面的搜尋框打關鍵字。

在設定裡搜尋 font size,找到 Editor: Font Size

覺得字太小就調大,不改也完全沒差。這一項純粹看個人。

在設定裡搜尋 files.encoding,設成 UTF-8

沒設的話,程式裡的中文(例如 cout << “答案是”;)跑出來會變成一堆亂碼。

右下角狀態列也會顯示目前這個檔的編碼,點它可以單獨改某一個檔。已經變成亂碼的舊檔救不回來,重打比較快。

在設定裡搜尋 extension recommendations,把 Extensions: Ignore Recommendations 打勾。

VS Code 三不五時會在右下角跳出「要不要裝這個外掛」的通知,寫題寫到一半跳出來很煩。勾了就安靜了。

Extensions: Ignore Recommendations
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++ 的東西。

依序檢查三件事:

  1. PATH 到底加了沒?回第 5 章重看一次,注意是使用者變數那一區。
  2. 路徑有沒有打錯?C:\msys64\ucrt64\bin,是 ucrt64 不是 mingw64(除非你裝的是舊版那包)。可以先用檔案總管打開這個資料夾,確認裡面真的有 g++.exe
  3. 有沒有把 VS Code 完全關掉重開?這是最常見的答案。不是關視窗,是整個程式結束再開。

編輯區右上角根本沒有那顆 ▶,或按了什麼事都沒發生。依序確認:

  1. C/C++ 擴充裝了嗎?Ctrl+Shift+X,搜尋 C++,看 Microsoft 那個是不是顯示已安裝。(第 3 章)
  2. 現在開的檔案是 .cpp 嗎?看右下角狀態列,最右邊應該寫著 C++。如果寫 Plain Text,代表檔名沒有 .cpp
  3. 你是用「開啟資料夾」進來的嗎?看側邊欄,如果寫著沒有開啟資料夾,就是這個問題。(第 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. 重點回顧

裝完編譯器,一定要加 PATH,然後把 VS Code 整個關掉重開。 「明明裝好了卻找不到」幾乎都是這兩件事其中一件沒做。
用 File → Open Folder 開資料夾,不要直接開單一 .cpp。 VS Code 要有工作區才能把設定存進 .vscode 資料夾。
第一次跑完,去 .vscode/tasks.json 把 args 換成競程建議參數。 -std=c++17 -O2 -Wall -Wextra -Wconversion。自動產生的設定這些全都沒有。

15. 隨堂測驗

六題。選錯不會直接告訴你答案,只會給提示,可以重選。 答對 0 / 6

第 1 題 VS Code 自己會不會編譯 C++?

提示:第 1 章說要湊齊三樣東西。VS Code 只是其中一樣,擴充套件是第二樣,那第三樣是什麼?

第 2 題 搜尋 C++ 之後,該裝哪一個擴充套件?

提示:第 3 章。名字長得像的一大堆,要看的是名字底下那一行寫誰做的。

第 3 題 MSYS2 裝完之後,還要做什麼 VS Code 才找得到 g++?

提示:第 5 章。g++ 躲在一個資料夾裡,你得先告訴 Windows 去哪裡找它。而且改完有一個動作一定要做。

第 4 題 為什麼要用「開啟資料夾」而不是直接開 .cpp 檔?

提示:第 7 章。想想你第一次按 ▶ 之後,資料夾裡多出來的那個東西叫什麼。

第 5 題 第一次跑完之後,tasks.json 裡最該補上哪一行?

提示:第 9 章。自動產生的 args 裡有輸出檔名、有除錯資訊,就是沒有一行在說要用哪個版本的 C++。

第 6 題 在終端機貼完測資按了 Enter,程式卻沒反應,為什麼?

提示:第 10 章。程式不知道你打完了。Windows 上是一組兩個按鍵,macOS 是一組。

安裝過程卡住了?到 Discord 的 AA 競程 伺服器私訊 Anna 老師。

AA 競程 · VS Code + C++ 教學頁 | 實拍截圖以外,畫面上的介面示意為純 CSS 繪製
選單路徑、UI 文字與快捷鍵依 VS Code 官方文件撰寫,不同版本可能略有不同
先看 FAQ LINE 詢問