【发布时间】:2017-09-14 22:09:18
【问题描述】:
C/C++ 中static 函数或全局变量的范围仅限于其编译单元。我找不到解释为什么..为什么静态分配限制了变量和函数的范围?谢谢
【问题讨论】:
-
在这些情况下,“静态分配”不是
static关键字的含义。 -
你有误会。在文件范围内应用时,
static关键字表示静态链接,而不是静态存储持续时间。 (对于此类对象,静态持续时间总是如此。)静态链接表示标识符在当前翻译单元之外不可访问。因此,答案基本上是,“因为这就是static在这种情况下的意思。” -
谢谢@JohnBollinger,所以 static 关键字有两个不同的、不相关的含义?在全局变量和函数的上下文中,它是静态链接,而在函数中变量的上下文中,它是静态存储(对吗?)。静态存储和静态链接没有联系吗?
-
谢谢@RichardCritten。这回答了我的问题“它们控制名称的两个独立属性:它的存储持续时间和它的链接。”虽然我对他们为什么选择一个词来控制这两件事很感兴趣。为什么静态存储和内部链接应该如此紧密地耦合?也许这是另一个问题..