标识符的链接属性
鏈接屬性
函數(shù)在使?的時候可能在不同的源?件中,每個源?件單獨編譯完成之后?成對應(yīng)的?標(biāo)?件,所有的?標(biāo)?件以及那些從?個或者多個函數(shù)庫中引?的函數(shù),鏈接在?起形成了可執(zhí)?程序。那相同的?個標(biāo)識符出現(xiàn)在?個不同的源?件中,如何對待他們?標(biāo)識符的鏈接屬性決定了如何處理。
鏈接屬性分為:
- 外部鏈接屬性
- 內(nèi)部鏈接屬性
- ?鏈接屬性
?
?
外部鏈接屬性:全局標(biāo)識符具有外部鏈接屬性。?個標(biāo)識符,不僅可以在當(dāng)前源?件使?。使用extern 的聲明可以在其他源?件使?。
//add.c源?件 int Add(int x, int y)//具有外部鏈接屬性 {return x+y; } int g_val = 2016; //具有外部鏈接屬性//test.c源?件 #include <stdio.h> extern int Add(int, int); extern int g_val; int main() {int a = 10;int b = 20;int ret = Add(a, b);printf("g_val = %d\n", g_val);return 0; }?
內(nèi)部鏈接屬性:具有外部鏈接屬性的的標(biāo)識符如果前?加上?個 static 關(guān)鍵字修飾就會變成內(nèi)部鏈接屬性。
//add.c源?件 static int Add(int x, int y)//具有內(nèi)部鏈接屬性 {return x+y; } static int g_val = 2016; //具有內(nèi)部鏈接屬性//test.c源?件 #include <stdio.h> extern int Add(int, int); extern int g_val; int main() {int a = 10;int b = 20;int ret = Add(a, b);printf("g_val = %d\n", g_val);return 0; } //運行會報編譯錯誤?
?鏈接屬性:局部變量是?屬性的
總結(jié)
- 上一篇: 操作符和表达式的问题总结
- 下一篇: Linux——线程(总结)