標識符表示存放變量或被編譯過的函數體的存儲空間,連接用連接器所見的方式描述存儲空間,連接方式由兩種:內部連接和外部連接
1、內部連接:只對正被編譯的文件創建存儲空間,用內部連接,別的文件可以使用相同的標識符或者全局變量,連接器不會發現沖突——也就是為為一個標識符創建單獨的存儲空間,在C和C++中,內部連接使由關鍵字static指定的。
2、外部連接:為所有被編譯過的文件創建一片單獨的存儲空間,一旦創建存儲空間,連接器必須解決所有對這篇存儲空間的引用。全局變量和函數名有外部連接,通過extern關鍵字聲明,可以從其他文件訪問這些變量和函數,函數之外定義的所有變量(在C++中除了const)和函數定義默認為外部連接。可以使用static關鍵字特地強制他們具有內部連接,即文件作用域,也可以在定義時時使用關鍵字extern顯示標識符具有外部連接
函數調用時候,自動變量(局部變量)只是臨時存在于堆棧中,連接器不知道自動變量,所以這些變量沒有連接。
新聞熱點
疑難解答
圖片精選