链接属性,存储类型,static关键字
链接属性#
链接属性分为三种,external(外部),internal(内部)和none。属于internal链接属性的标识符在同一个源文件内的所有声明中都指同一个实体,但位于不同源文件的多个声明则分属不同的实体。属于external链接属性的标识符不论声明多少次、位于几个源文件都表示同一个实体。
在缺省情况下,标识符b,c和f的链接属性为external,其余标识符的链接属性则为 none。因此,如果例外一个源文件也包含了标识符 b 的类似声明并调用函数 C,它们实际上访问的是这个源文件所定义的实体。f的链接属性之所以是 extermal 是因为它是个函数名。在这个源文中调用函数 它实际上将链接到其他源文件所定义的函数,甚至这个函数的定义可能出现在某个函数库。
- 关键字extern和 static 用于在声明中修改标识符的链接属性。如果某个声明在正常情况下具有extermal 链接属性,在它前面加上 static 关键字可以使它的链接属性变为 intermal。例如,如果第2个声明像下面这样书写:
static int b;
那么变量b将为这个源文件所私有。
static 只对缺省链接属性为external 的声明才有改变链接属性的效果。例如,尽管你可以在声明前面加上 static 关键字,但它的效果完全不一样,因为e的缺省链接属性并不是 external。
extern 关键字的规则更为复杂。一般而言,它为一个标识符指定external链接属性,这样就可以访问在其他任何位置定义的这个实体。请考虑图3.3 的例子。声明3为 指定xtermal 链接属性。这样一来,函数就可以访问在其他源文件声明的外部变量了。
存储类型#
static关键字#
当用于不同的上下文环境时,static关键字具有不同的意思。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2021-06-08 建立文件软连接