首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C++ extern 關鍵字詳解:跨文件變量聲明與 const 變量鏈接特性

     編輯:關於C語言

核心概念:聲明 vs 定義

  • 定義:分配存儲空間,可初始化。一個程序中有且僅有一個定義。
  • 聲明:告知類型與名字,不分配空間。可多次聲明。
  • 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無內部鏈接否
全局 constextern外部鏈接是
本文出自「我的學習筆記」博客,轉載請保留出處:原文鏈接
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved