Code::Blocks 完全上手:Windows 安裝與設定

Code::Blocks 完全上手

Windows 零基礎

1. 簡略教程

如果你只想趕快能跑程式,記住三件事:

一、codeblocks.org 的下載頁 下載 codeblocks-25.03mingw-setup.exe。檔名中間一定要有 mingw

二、打開後按 Ctrl+Shift+N 開新檔,先存檔,檔名結尾打 .cpp,再開始寫。

三、F9,會跳出一個黑色視窗,那就是你的程式在跑。

卡住的話,直接跳到你卡住的那一章。

2. 下載與安裝

官網怎麼走:四步,三張圖
畫面 1 / 3

① 在網址列輸入 codeblocks.org ② 點左邊的 Downloads

網站的主選單在左邊那一直排,不是在上面。由上往下是 News、Features、Downloads、User manual、Forums、Wiki、License、Donations。要下載就點 Downloads,其他先不用管。

③ 點 Download the binary release

這一頁列了幾種下載方式。只點第一個 Download the binary release,那是裝好就能用的安裝檔。
底下的 Download a nightly build 是每日測試版;Download the source code 和 Retrieve source code from SVN 是原始碼,點下去你會拿到一堆程式碼檔案,還要自己把整套軟體編譯出來,不是你要的。

④ 點 mingw-setup 那一列的下載連結

往下捲到 Microsoft Windows (64 bit, default) 那張表。左欄 File 是檔名,右欄 Download from 有兩個下載點——dAppCDN.comSourceforge.net,檔案一模一樣,哪個能下就用哪個(圖上點的是 Sourceforge.net)。dAppCDN 那條只認得從官網頁面點進去,從別的地方點會失敗,所以上面那個連結是帶你回官網下載頁。
點下去會先跳到另一個網站才開始下載,那是正常的,不是你點錯。
再往下還有一張「32 bit」的表,檔名幾乎一模一樣,很容易看錯。現在的電腦幾乎都是 64 位元,用上面這張就好。

走到最後一步就是關鍵。那張表列出五個檔案,名字長得非常像。

五個裡面只有兩個附帶編譯器,就是檔名中間有 mingw 的那兩個。編譯器是把你寫的程式翻譯成電腦看得懂的東西的工具,沒有它,Code::Blocks 就只是一個很厲害的記事本,按 F9 只會跳出「找不到編譯器」。

官網自己也在下載頁寫了一句:If unsure, please use codeblocks-25.03mingw-setup.exe!(不確定的話請用這個)。

點點看,哪一個才是你要下載的?
還沒選

✕ 這個沒有編譯器。Code::Blocks 本身會裝好,但你按 F9 會跳「找不到編譯器」。

✕ 一樣沒有編譯器。nonadmin 只是給沒有系統管理員權限的人用的版本。

✕ 沒有編譯器,而且是免安裝壓縮檔,要自己解壓縮、自己建捷徑。新手不要碰。

✓ 就是這個。mingw 代表裡面附了 GCC 編譯器和 GDB 除錯器(WinLibs 版本 14.2.0)。官網也建議不確定就選它。

△ 有編譯器,但是免安裝壓縮檔,要自己處理。除非你有特殊需求,不然還是選上面那個。

五個檔名長得很像,差別只在中間那幾個字母。先猜猜看,點錯也沒關係。
新手大坑 ①

很多人手快點到第一個 codeblocks-25.03-setup.exe,它排在最上面、名字最短。裝完當下毫無異狀,要等你寫完第一支程式按 F9 才會發現編譯不了,然後開始懷疑是程式寫錯。

分辨方法只有一個:檔名中間有沒有 mingw

下載完之後

檔案大約 400 MB,載完雙擊它就開始安裝。安裝精靈會問你幾件事,全部按 Next 到底就好:授權條款按同意、安裝元件維持預設不要動、安裝路徑也不用改。最後按 Finish。

裝完桌面或開始功能表會出現 Code::Blocks 的捷徑,打開它,接著看下一章。

3. 首次啟動:選擇編譯器

安裝快跑完的時候,會自己跳出一個叫 Compilers auto-detection 的視窗(有時候是你第一次打開 Code::Blocks 才跳)。它在掃描你的電腦,看看裝了哪些編譯器。

中間那張表,左欄是編譯器名稱,右欄是狀態。大部分都會寫 Not found,那是正常的,那些是給 Fortran、D 之類其他語言用的。

你只要看 GNU GCC Compiler 那一行,右邊寫著 Detected 就對了。視窗下面也會顯示 Current default compiler: GNU GCC Compiler

通常它已經幫你選好了,直接按 OK 就行。如果沒被選起來,點它一下,再按 Set as default,然後按 OK。這是在告訴 Code::Blocks 以後預設就用 GCC,按過一次就不會再問。

如果 GNU GCC Compiler 那一行也是 Not found,代表你下載到沒有 mingw 的版本,編譯器根本沒裝進來。回第 2 章重新下載。

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

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

① 開一個新的空白檔

選單走 File → New → Empty file,或直接按 Ctrl+Shift+N。中間會多出一個空白的分頁,標題大概叫 Untitled1

② 先存檔,而且副檔名要打 .cpp

Ctrl+S,跳出存檔視窗。找一個你自己記得住的資料夾(桌面就可以),檔名打 Untitled1.cpp。名字可以自己取,重點是結尾要有 .cpp
.cpp 這三個字要自己打出來,存檔視窗不會幫你加。

③ 打上這段程式

打完你會發現字有顏色了:#include 一種色、字串又一種色。有顏色就代表存對了。
這支程式會先讀兩個數字、印出相加的結果,再印一行字。

④ 按 F9

工具列上這一顆就是 Build and run,快捷鍵 F9

3 14 17 Hello,AACPSCHOOL! Process returned 0 (0x0) execution time : 0.016 s Press any key to continue.

Code::Blocks 會先編譯(把你的程式翻譯成執行檔),成功的話馬上執行。畫面會另外彈出一個黑色視窗,。這支程式要讀兩個數字,所以它會先停在那裡等你輸入。打上 3 14 再按 Enter,就會印出 17 和那行字。

Untitled1.cpp
#include <iostream>
using namespace std;
int main(){
    int a,b;
    cin >> a >> b;
    int c = 0;
    c = a + b;
    cout << c << endl;
    cout << "Hello,AACPSCHOOL!"<<endl;
}
新手大坑 ②

沒存成 .cpp 之前,Code::Blocks 不知道你在寫 C++。程式碼會是一片灰白沒有顏色,而且 F9 按下去不會有反應,或是跳出奇怪的錯誤。

所以順序是:開新檔 → 立刻存成 .cpp → 才開始打字。不是打完再存。

切換副檔名,看同一段程式碼的差別
Untitled1.cpp
1#include <iostream> 2using namespace std; 3 4int main() { 5 cin >> a >> b; 6}
✓ 可以編譯 — 按 F9 就會跑

同一段字,差別只在副檔名。

5. 主控台視窗說明

那個黑視窗叫主控台(console),是程式跟你溝通的地方。你的 cout 印出來的東西會出現在這裡,你要餵給程式的資料也是打在這裡。

程式跑完,最下面會多出兩行:

3 14 17 Hello,AACPSCHOOL! Process returned 0 (0x0) execution time : 0.016 s Press any key to continue.
那一行意思
Process returned 0程式正常結束。0 就是「沒事」。如果這裡是別的數字,代表程式中途出狀況了(例如陣列開太小、除以零)。比賽裡這種情況叫 RE(Runtime Error)。
execution time跑了多久,單位是秒。比賽有時間限制,這個數字你之後會很常看。
Press any key隨便按一個鍵就會關掉視窗。

執行時間每次跑都會有點不一樣,這很正常,不用在意小數點後面。

6. 測試資料輸入與 EOF

競賽題目的程式幾乎都要讀輸入。你在主控台把測資打進去(或用滑鼠貼上去),程式才有東西可以算。

麻煩的是,很多程式寫成「一直讀到沒東西為止」,像這樣:

sum.cpp
#include <iostream>
using namespace std;

int main() {
    int x, sum = 0;
    while (cin >> x) sum += x;
    cout << sum << '\n';
}

你把測資打完、按了 Enter,程式還是停在那裡不動。因為它不知道你打完了

這時候要送出一個叫 EOF 的訊號,意思是「輸入到此為止」。在 Windows 的做法是:

Ctrl+Z,再按 Enter

按下去畫面上會出現 ^Z,再按 Enter,程式就會繼續跑完並印出答案。這不是程式壞掉,是每個人都要做的動作。

親手試一次 EOF
未完成
程式已經在跑了,正在等你輸入。先按「貼上範例測資」。

7. 常用快捷鍵

點卡片翻面看用途
翻開 0/3

8. 編譯參數與其他設定

第一項一定要做,它決定你的程式用哪一套規則編譯。後面兩項是個人習慣,不改也能跑。

路徑:Settings → Compiler → Compiler settings 頁籤 → Compiler Flags 頁籤

裡面是一棵分類樹。照下面四步勾,每一步都有畫面對照。

① 展開 General,勾 C++17 那一行

清單裡有好幾行長得很像,看每一行最後面方括號裡的參數,要勾的是 [-std=c++17] 那一行。

② 展開 Optimization,勾選 for speed 的 -O2

那一行寫的是 Optimize even more (for speed) [-O2],勾起來程式會跑得比較快。

補充:清單上面還有一行 Linker output optimization (level 2) 也標著 -O2,但它沒有 for speed,不是這一個。認「for speed」加「-O2」兩個條件都符合的那一行。

③ 展開 Warnings,勾兩行

對應的參數是 -Wall-Wextra

補充:這兩行中間隔了一行 Enable Effective-C++ warnings,那一行不用勾,別數錯。

④ 切到 Other compiler options,打上 -Wconversion

Other compiler options
-Wconversion

它不在勾選清單裡,只能手打。打完按 OK,五個參數就齊了。

補充:這一格不要再打 -std=,第一步已經勾過,重複填會打架。

參數做什麼
-std=c++17用 C++17 的規則。APCS 與資訊學科能力競賽公告的環境都是這個版本。
-O2開啟編譯最佳化,程式跑得比較快。
-Wall-Wextra把常見的可疑寫法念出來,例如變數宣告了沒給初始值。
-Wconversion數字型別偷偷被轉換時提醒你。這類問題最容易讓答案默默算錯。

警告不會讓編譯失敗,程式照樣跑得起來。但它們常常就是答案算錯的原因,別直接無視。

-O2 會讓編譯器重排你的程式碼。哪天你要用除錯器單步追蹤、卻發現行號跳來跳去,把它取消勾選就好。

路徑:Settings → Editor,打開的視窗叫 Configure editor,切到最右邊的 Encoding settings 頁籤

Use encoding when opening files 設成 UTF-8,按 OK。

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

補充:設完之後新開的檔才會用 UTF-8。已經存成亂碼的舊檔救不回來,重打比較快。

路徑:Settings → Editor → 左側清單選 General settings → 右上角的 Choose 按鈕

會跳出 Windows 的字型選擇視窗,可以挑等寬字型(例如 Consolas)並把字級調大。

覺得字太小再調就好,不改也不影響任何功能。這一項純粹看個人。

競程建議編譯環境:GCC + C++17。不管你用 Code::Blocks、VS Code,還是自己開命令提示字元打指令,參數都是這一組:

競程建議編譯參數
-std=c++17 -O2 -Wall -Wextra -Wconversion

這組參數是照哪裡定的

不是我們自己挑的。APCS 官網把檢測當天實際用的編譯指令公告在 檢測資訊 → 系統環境 這一頁:

③ 那一行寫的是 g++ -g -O2 -std=c++17 -static -lm:C++ 標準是 C++17,最佳化開 -O2。這頁教的參數就是照它定的。

APCS 之後換環境,這裡的參數也要跟著換。自己去官網那一頁看最準。

資料來源:APCS 官網「系統環境」,2026-09-04 查證。

9. 編譯訊息判讀

按 F9 之後,如果沒跳出黑視窗,代表編譯沒過。下方 Build 面板會有訊息,先看清楚兩個分頁的差別:

  • Build log:完整流水帳,包含它下了什麼指令。訊息很多,新手先不用看。
  • Build messages:整理過的清單,只留下有問題的地方。你要看的是這個。
意思會不會擋你
error錯誤。編譯器看不懂,翻譯不下去。會。有 error 就產不出執行檔,程式跑不了。
warning警告。看得懂,但覺得你可能寫錯了。不會。程式照樣跑得起來。

有 error 就一定要修。warning 不修程式也會動,但第 8 章講過,它常常在指出真正的問題。

兩個操作習慣

一、雙擊那一列,游標會直接跳到程式碼的那一行。不要自己一行一行數。

二、只看第一個 error。編譯器是從上往下讀的,第一個地方看不懂之後,它就整個亂掉了,後面那一串 error 常常都是第一個引起的連鎖反應。修好第一個再重編一次,你會看到十幾個錯誤一次消掉八個。

點下面任一列,看它跳到哪一行(真的 Code::Blocks 裡要雙擊)
點過 0/3
Untitled1.cpp
1#include <iostream> 2using namespace std; 3 4int main() { 5 int a = 3 6 int tmp = 0; 7 cout << a; 8}
Build logBuild messages
FileLineMessage
清單裡有 1 個 error 和 2 個 warning。先點 error 那一列試試。

10. 常見編譯錯誤

下面四種最常撞到。每一種都給你最小的例子,看編譯器會說什麼。

錯誤訊息的文字會隨 GCC 版本略有不同,抓關鍵字看就好。

壞掉的程式碼
#include <iostream>
using namespace std;

int main() {
    int a = 3
    cout << a << '\n';
}
編譯器會說
main.cpp: In function 'int main()':
main.cpp:5:14: error: expected ';' before 'cout'
    5 |     int a = 3
      |              ^
      |              ;
    6 |     cout << a << '\n';
      |     ~~~~

它說第 5 行少了分號,可是第 5 行看起來明明沒問題。那是因為編譯器一路讀到第 6 行的 cout,才發現前面沒收尾。

所以看到 expected ‘;’,往看一行,分號幾乎都是漏在那裡。這裡補成 int a = 3; 就好。

壞掉的程式碼
#include <iostream>
using namespace std;

int main() {
    cin >> n;
    cout << n << '\n';
}
編譯器會說
main.cpp: In function 'int main()':
main.cpp:5:12: error: 'n' was not declared in this scope
    5 |     cin >> n;
      |            ^

not declared in this scope 直翻就是「這裡沒有一個叫 n 的東西」。編譯器不會自己猜 n 該是什麼型別,你得先講。

可能是真的忘了宣告,也可能是宣告寫在使用的後面。C++ 從上往下讀,用之前一定要先宣告。把 int n; 補在 cin >> n; 前面。

壞掉的程式碼
#include <iostream>
using namespace std;

int main() {
    for (int i = 0; i < 3; i++) {
        cout << i << '\n';
}
編譯器會說
main.cpp: In function 'int main()':
main.cpp:7:2: error: expected '}' at end of input
    7 | }
      |  ^

at end of input 是「我讀到檔案最後了,還缺一個右大括號」。

這種錯的行號特別不可靠,它只會指到最後一行,真正少的地方可能在中間。把游標點在某個 { 上,Code::Blocks 會幫你標出配對的 },從最外層一個一個往裡對。

以後打完 { 就先把 } 補上,再回頭填中間,就不會漏。

壞掉的程式碼
#include <iostream>
using namespace std;

int main() {
    int a = 3cout << a << '\n';
}

看出來哪裡不一樣了嗎?第 5 行結尾那個分號是全形的 ,不是半形的 ;

編譯器會說
main.cpp:5:14: error: extended character ; is not valid in an identifier
main.cpp:5:15: error: expected ';' before ';'

訊息裡只要出現 extended character,幾乎都是全形符號害的。原因通常是打程式時中文輸入法還開著,最容易中招的是這幾個:

全形(錯)半形(對)
;
,
( )( )
“ ”” “
全形空白(看不見)一般空白

最陰險的是全形空白,肉眼看不出來,程式碼看起來完全正常,但編譯就是不過。

打程式前先按 Shift 把輸入法切回英文。真的中了,那一行整行刪掉重打最快,用眼睛找很花時間。

11. 執行正常但結果錯誤

到這裡,Code::Blocks 這個軟體你已經會用了,這頁的任務結束。

不過你很快會遇到另一種狀況:程式編譯過了,跑得動也不會當,但答案就是不對。這種問題 Code::Blocks 幫不上忙——軟體沒壞,是你的想法哪裡漏掉了。那是另一門功夫,跟你用哪個編輯器無關。

想往下練的話,AA 競程網站的〈免費學習資源〉裡有三份,夠你看很久:

AA 競程演算法競賽 Debug 手冊 dreamoon 老師編寫。從語法班的常見錯誤,一路到二分搜、線段樹的陷阱。答案錯了不知道從哪找起,就把它當檢查清單一條一條過。中文,先看這份。 Catching silly mistakes with GCC 英文。講怎麼用編譯參數讓編譯器多幫你抓錯,是第 8 章那組參數的延伸。 USACO Guide: Debugging C++ 英文。C++ 找 bug 的系統化整理,也包含對拍這類進階做法。

12. 重點回顧

下載時檔名一定要有 mingw。 codeblocks-25.03mingw-setup.exe 才有編譯器。裝錯當下不會有異狀,等你按 F9 才會爆。
開新檔的第一件事是存成 .cpp。 不是寫完再存。存了才有語法上色,也才編譯得動。
出錯先看 Build messages 的第一個 error,雙擊跳過去修它。 後面那一串常常是它引起的連鎖反應,修好第一個就會少一半。

13. 隨堂測驗

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

第 1 題 你要在官網下載哪一個檔案?

提示:五個檔案裡只有兩個附編譯器。差別在檔名中間那五個字母,它代表「有附贈編譯器」。回第 2 章看一次。

第 2 題 開好一個空白檔之後,第一件事應該做什麼?

提示:想一想第 4 章那個 .txt 換 .cpp 的切換鈕。同一段程式碼,只換副檔名,畫面上多了什麼?

第 3 題 「編譯並執行」是哪一個快捷鍵?

提示:你選的那個只做一半的事。回第 7 章,要一次做完編譯和執行的是哪一顆。

第 4 題 你跑的是下面這支程式,在黑視窗貼完測資、按了 Enter,畫面卻停著不動,為什麼?

int x, sum = 0;
while (cin >> x) sum += x;
cout << sum << '\n';
提示:程式不知道你打完了。第 6 章有一組兩個按鍵,按完程式才會往下跑。

第 5 題 Build messages 出現 1 個 error 和 5 個 warning,你應該先做什麼?

提示:第 9 章有一句話——編譯器是從上往下讀的,第一個地方看不懂之後就整個亂掉了。而且 warning 不會擋你編譯。

第 6 題 編譯錯誤訊息裡出現 extended character,最可能是什麼問題?

提示:第 10 章分頁四。想想看你打程式的時候,輸入法是不是還停在中文。最常中招的是分號和逗號。

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

AA 競程 · Code::Blocks 教學頁 | 實拍截圖以外,畫面上的介面示意為純 CSS 繪製
選單路徑與介面文字依 Code::Blocks 25.03 撰寫,不同版本位置可能略有不同
先看 FAQ LINE 詢問