AI Academy
促銷
CodeGym University
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題
課程
評論
關於我們
開始
開始學習
立即開始學習
My Progress
Courses
任務地圖
課程
C++
C++
等級 30
建置階段:preprocessing → compile → link
C++ SELF
等級 30,
課程 0
解析 IDE 中「Run」按鈕實際做了什麼:preprocessor 如何展開
#include
和巨集(
#define
,
#if
),編譯器如何把每個
.cpp
轉成目標檔(
.o
/
.obj
),以及連結器如何把一切黏成可執行檔,尋找(或找不到)符號的定義。過程中引入
translation unit
的概念,並把它和典型的建置錯誤與
ODR
連結起來。
編譯錯誤 vs 連結錯誤
C++ SELF
等級 30,
課程 1
解析 compile error 與 link error 在 C++ 中的區別:問題出現在哪個階段、為什麼編譯器只需要聲明而連結器要求定義,以及如何在 10 秒內通過關鍵字
expected
、
was not declared
、
undefined reference
和
multiple definition
來分類日誌。以迷你專案
TaskBox
為例,展示典型場景:忘記了
;
、漏寫
#include
、沒有參與構建的
.cpp
以及簽名不一致的情況。
Warnings:為何它們是未來的 Bug
C++ SELF
等級 30,
課程 2
解析為何編譯器的 warning 在 C++ 中不是「噪音」,而是未來錯誤的早期訊號:不明顯的意圖、類型邊界的風險(signed/unsigned)、可能造成資料遺失的隱式轉換、可疑的條件(
=
而非
==
)以及透過
[[nodiscard]]
忽略重要回傳。透過實際範例
TodoLite
學習如何在不驚慌的情況下讀懂 warning,並修正它們以明確表達程式碼意圖。
警告政策:「warnings as errors」
C++ SELF
等級 30,
課程 3
我們討論為何應將 C++ 編譯器警告視為早期問題信號,以及「
warnings as errors
」做法如何運作:如何處理
unused
變數與參數(包括採用
static_cast
<
void
>
的做法)、如何避免在以
std::size_t
遍歷容器時出現的
signed
/
unsigned
陷阱,以及為何像
double
→
int
的隱式轉換最好是有意識地進行。最後 — 用 MiniTracker 的範例、mermaid 組建流程圖以及對實施嚴格政策時常見錯誤的分析。
迷你診斷工具箱:輸出、assert、日誌訊息
C++ SELF
等級 30,
課程 4
一組用於快速除錯 C++ 主控台程式的小技巧:將「正確輸出」與透過
std::cout
/
std::cerr
的診斷分開,使用
assert
檢查內部契約,透過
log_debug
/
log_error
函數與開關
ENABLE_DEBUG_LOGS
整理訊息。所有示範都在教學應用
MiniTasks
上演示,並搭配簡短的「假設 → 驗證 → 修改」迴圈。
Please enable JavaScript to continue using this application.