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的圖書類別編...