1.链接属性定义
1.如果相同的标识符出现在不同的源文件中,他们是表示一个实体,还是表示不同的实体,无法确定。标识符的链接属性决定如何处理不同文件中出现的标识符。标识符的作用域与它的链接属性有关,但这俩个属性不相同。
2.链接属性有三种,分别是—external(外部),internal(内部),none(无)
2.链接属性的分类
1.none(无):没有链接属性的标识符总被当做单独的个体,表明该标识符的多个声明当做独立的不同的实体。
2.internal(内部):属于内部链接属性的标识符在同一个源文件内的所有声明中都指同一个实体,但位于不同的源文件中的多个声明属于不同的实体。
3.external(外部):属于外部链接属性的标识符不论声明多少次,位于几个源文件都表示同一个实体。
3.代码解释
typedef char* a
//在默认情况下,标识符b c f都是外部链接属性
int b;
int c(int d)
{
int e;
int f(int g);
}
4.修改链接属性
一:static关键字
定义:使用static关键字可以使得原先拥有外部链接属性的标识符变为内部链接属性。
以下注意
- 使用static关键字修改链接属性,只对具有文件作用域的标识符生效(另一种功能是静态变量)
- 链接属性只能修改一次,一旦标识符链接属性变为内部链接属性,就无法变回内部链接属性。