AI Academy
促銷
CodeGym University
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題
課程
評論
關於我們
開始
開始學習
立即開始學習
My Progress
Courses
任務地圖
課程
C++
C++
等級 29
Declaration vs definition:連結錯誤的來源
C++ SELF
等級 29,
課程 0
分析為何在多檔案 C++ 專案中會出現「編譯通過但連結失敗」的情況:什麼是
declaration
(存在的承諾)與
definition
(真實的實作/記憶體),翻譯單位(
translation unit
)如何組成,編譯器檢查哪部分、連結器要求哪部分,以及如何在示範專案
TaskBook
中正確地把宣告放在
.hpp
、把定義放在
.cpp
。
不能重複定義同一個東西
C++ SELF
等級 29,
課程 1
我們來講解在多檔案 C++ 專案中的
ODR
(
One Definition Rule
)規則:區分宣告與定義、為何連結器會抱怨
multiple definition
、為何
#pragma once
只能防止在同一個
.cpp
內重複包含、為何在
.hpp
放置函式定義與全域變數是危險的,以及如何按教科書方式修正(在標頭宣告,在一個
.cpp
中定義)。最後 — 常見錯誤與對
inline
的謹慎介紹。
inline
‑函式與
inline
‑變數
C++ SELF
等級 29,
課程 2
解析為何在標頭檔 (
.hpp
) 直接定義函式與變數常會導致連結錯誤
multiple definition
,實際上關鍵字
inline
的作用是處理
ODR
,而不是「提速」。以及如何正確地撰寫
inline
‑函式與
inline
‑變數(含
inline constexpr
),以及在哪些情況下
inline
會對建置與架構造成傷害。
static
和 anonymous namespace
C++ SELF
等級 29,
課程 3
解析在 C++ 裡如何將實用名稱「藏」在
.cpp
內:什麼是
external
/
internal linkage
、檔級別的
static
與
namespace
{}
的工作原理、為何在標頭檔使用
static
會在所有翻譯單元中複製實體、internal linkage 如何幫助避免名稱衝突,以及鏈結錯誤形式為
undefined reference
的由來。
典型的 linker 錯誤
C++ SELF
等級 29,
課程 4
解析在多檔案 C++ 專案中最常見的連結錯誤:
multiple definition
和
undefined reference
有何不同,
ODR
與文本性質的
#
include
如何導致符號「被複製」,何時使用
extern
、
inline
、
static
和
namespace
,以及如何根據錯誤訊息進行診斷(包含流程圖與示範專案
MiniPlanner
)。
Please enable JavaScript to continue using this application.