C 的內鏈結與外鏈結

2022-09-08 10:12:10 字數 563 閱讀 5185

1、編譯單元

在編譯器編譯**時,只會去編譯.cpp檔案,而所有的標頭檔案會在預編譯時全部拷貝到.cpp中去,之後編譯.cpp檔案,所以每個.cpp檔案是乙個編譯單元。

2、宣告

宣告是將乙個名稱引入到乙個作用域中來,並且,除了類中的成員函式和成員變數的外,在同乙個作用域是可以重複宣告的。

3、定義

定義決定了乙個實體在乙個作用域中的唯一描述,在乙個作用域中,定義只能出現一次。

4、內部鏈結

乙個名稱在編譯時不會與其他的編譯單元中的同樣名稱產生衝突,那麼這個名稱就擁有內部鏈結。

(1)static 全域性變數,static自由函式

(2)類的定義,內聯函式定義

(3)union定義

(4)const常量定義

(5)列舉型別定義

(6)所有的宣告

5、外部鏈結

乙個編譯單元中能向其他編譯單元中提供定義,讓其他編譯單元使用的函式、變數擁有外部鏈結。

(1)類的靜態成員變數的定義

(2)類的非內聯函式

(3)非static的自由函式,非static的全域性變數

C 內鏈結 外鏈結

編譯的時候 假如編譯器是vs 是以原始檔cpp檔案為單位,編譯成乙個個的obj檔案,然後再通過鏈結器把不同的obj檔案鏈結起來。如果一些變數或函式的定義是內連線的話,鏈結器鏈結的時候就不會拿它們去與obj比較看有沒有重複定義,乙個原始檔中即使是extern宣告的變數或函式也不能使用另外乙個原始檔中的...

Oracle 外鏈結 內鏈結 等

b 首先建立兩張表,初始化資料 b sql create table zk test 1 id int,name varchar 10 sql insert into zk test 1 values 1,aaa sql insert into zk test 1 values 2,bbb sql ...

My SQL的內連線,外鏈結查詢

1 內連線 只連線匹配的行。2 左外連線 包含左邊表的全部行,以及右邊表中所有匹配的行,無論右邊的表有沒有和左邊匹配的行,左邊的所有行都必須要顯示。3 右外連線 包含右邊表的全部行,以及左邊表中所有匹配的行,無論左邊的表有沒有和右邊匹配的行,右邊的所有 行都必須要顯示。例 表t book的圖書類別編...