extern 關鍵字詳解:跨文件變量聲明與 const 變量鏈接特性extern int i; → 僅聲明。int i; → 聲明並定義。extern 聲明普通變量extern int i = 0; // 含初始化式 → 視為定義(分配空間) // 隨後再出現 int i; 或 extern int i = 0; 皆報錯:重複定義
規則:只有非函數作用域的 extern 聲明才能帶初始化式;函數內部的 extern 不能初始化。
extern 聲明 const 變量(關鍵差異)C++ 中,全局 const 默認具有內部鏈接(僅當前文件可見),不同於普通全局變量的外部鏈接。
const 的正確姿勢// file_1.cpp extern const int i = 0; // 顯式 extern → 外部鏈接,分配空間並初始化 // file_2.cpp extern const int i; // 聲明使用 file_1 中的定義 if (i == 0) cout << "success!";
若無 extern,file_1.cpp 中的 const int i = 0; 僅在該文件內有效,file_2.cpp 無法訪問(鏈接錯誤或各自獨立副本)。
| 場景 | 關鍵字 | 鏈接屬性 | 可跨文件 |
|---|---|---|---|
| 普通全局變量 | 無 / extern | 外部鏈接 | 是 |
| 全局 const | 無 | 內部鏈接 | 否 |
| 全局 const | extern | 外部鏈接 | 是 |
本文出自「我的學習筆記」博客,轉載請保留出處:原文鏈接