标识符的链接属性决定处理在不同文件中出现的标识符,一共分三种-none(无)、external(外部)和 internal(内部)。
- none:函数形式参数和代码块内声明的变量在缺省情况下具有none链接属性 。
- external:并非声明于代码块内的变量,缺省情况下具有external链接属性,(函数名也不包含于任何代码块)。
- internal:缺省情况下,除了上述说明的external属性以外,其余均为none。因此internal属性出现在static修饰之后。
注意:
- 具有external链接属性的变量(或函数名)具有全局可见性,对于变量,在声明前加extern表示引用文件A中的对应变量,函数则可以直接使用。
- 非external链接的变量前加static,将不会改变链接属性,也就是static对none无效
例一:
int x;
int func(int a){
int y;
extern int c;
}
x、func为external,a、y为none
例二:
static int x;
static int func(int a){
int y;
}
在static修饰下,x、func都为internal,a、y为none
例三:
文件A
#include <stdio.h>
int x=0;
void print(void) {
printf("Hello World!\n");
return 0;
}
x、print有external
文件B
#include<stdio.h>
int main(){
extern int x;
print();
return 0;
}
这里print()可以直接使用,extern int x声明变量之后也可使用