C中的鏈結屬性及作用域

2021-06-19 17:26:16 字數 559 閱讀 1510

如果相同的識別符號出現在幾個不同的原始檔中時,它們是表示相同的實體,還是不同的實體。識別符號的鏈結屬性決定如何處理在不同檔案中出現的識別符號。識別符號的作用域與它的鏈結屬性有關。

鏈結屬性一般有三種:external 外部, internal 內部,none 無。沒有鏈結屬性的識別符號總是被當作單獨的個體,也就是說該識別符號的多個宣告被當作不同的實體。internal鏈結屬性的識別符號在同乙個原始檔內的所有宣告中都指同乙個實體,但位於不同原始檔中的宣告則分屬不同的實體。external 鏈結屬性的識別符號不論宣告多少次,位於幾個原始檔都表示同乙個實體。

typedef char *a;

int b;

int c(int d)

預設情況下b c f 的鏈結屬性是external,其餘的識別符號鏈結屬性則為none.則另乙個原始檔如果也包含了識別符號b的類似宣告並呼叫函式c,那它們實際上訪問的是這個原始檔所定義的實體。f的鏈結屬性之所以是external是因為它是個函式名。在這個原始檔中呼叫函式f,它實際上將鏈結到其他的原始檔所定義的函式,甚至這個函式的定義可能出現在某個函式庫。

作用域與鏈結屬性

december 6,2015 11 23 am 1.作用域檔案作用域 從申明位置開始到問價結束 原型作用域 從申明開始到結束,僅限於申明處,主要用於防止引數重名 塊作用域 位於一對花括號之內,從申明開始到右花括號 函式作用域 只有語句標號屬於函式作用域,不需要先申明再使用,乙個函式所有語句標籤唯一...

C 作用域 鏈結屬性和儲存型別

變數在程式的某個部分宣告時,只能在程式的一定區域內才能訪問,這個區域就成為作用域。作用域分為四種 檔案作用域 函式作用域 塊作用域和原型作用域。編譯器通過變數宣告的位置來確定作用域 當變數在所有 塊之外宣告時就在檔案作用域中,檔案作用域的範圍是從變數宣告處一直到檔案的結束。但如果宣告在 h 檔案中,...

(C ) 作用域和鏈結

作用域 描述了名稱在檔案 翻譯單元 的多大範圍內可見。例如 在function hello 中有個變數x,這個變數的作用域只在該函式範圍內有效。鏈結性為外部的可在檔案間共享,鏈結性為內部的名稱只能由乙個檔案中的函式共享。ps 自動變數的名稱沒有鏈結性,所以他們不能共享。變數的宣告週期的計算為 如果該...