連結器與載入器與執行檔格式
在C語言中寫下「extern int count;」時,下列關於其意義的敘述何者正確?
- A宣告變數count定義在其他地方,這裡不配置空間
- B新建變數count,並以0初始化
- C讓變數count無法從這個檔案之外看見
查看答案與解析
正確答案:A. 宣告變數count定義在其他地方,這裡不配置空間
extern是「此名稱的變數定義在其他檔案等處」的宣告,不會配置記憶體空間。編譯器在不知道count位址的情況下產生參照它的指令,並將該位置記錄在重定位資訊中。連結器會將其與其他檔案中如「int count = 0;」的定義連結起來,以決定位址。基本做法是在標頭檔中寫extern宣告,並將定義放在某一個原始檔中。
- A. 正確。只是宣告,定義在別處。
- B. 配置空間的是定義,如「int count;」等。
- C. 對外隱藏的是static。