标识符的链接属性
鏈接屬性
函數在使?的時候可能在不同的源?件中,每個源?件單獨編譯完成之后?成對應的?標?件,所有的?標?件以及那些從?個或者多個函數庫中引?的函數,鏈接在?起形成了可執?程序。那相同的?個標識符出現在?個不同的源?件中,如何對待他們?標識符的鏈接屬性決定了如何處理。
鏈接屬性分為:
- 外部鏈接屬性
- 內部鏈接屬性
- ?鏈接屬性
?
?
外部鏈接屬性:全局標識符具有外部鏈接屬性。?個標識符,不僅可以在當前源?件使?。使用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; }?
內部鏈接屬性:具有外部鏈接屬性的的標識符如果前?加上?個 static 關鍵字修飾就會變成內部鏈接屬性。
//add.c源?件 static int Add(int x, int y)//具有內部鏈接屬性 {return x+y; } static 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; } //運行會報編譯錯誤?
?鏈接屬性:局部變量是?屬性的
總結
- 上一篇: 操作符和表达式的问题总结
- 下一篇: DES算法流程