首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ -全局范围内变量的静态意义

C++ -全局范围内变量的静态意义
EN

Stack Overflow用户
提问于 2015-07-22 16:08:05
回答 2查看 75关注 0票数 2

当在全局范围中定义变量时,将其定义为静态变量的意义是什么?全局变量不是“静态的”吗?

这个代码有什么区别吗?:

代码语言:javascript
运行
复制
int var1 = 0;
int main()
{
    return var1;
}

static int var1 = 0;
int main()
{
    return var1;
}

我知道静态变量不能从任何其他翻译单元访问,但这并不是我真正关心的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-22 16:11:35

全局变量不是“静态的”吗?

全局变量确实放置在静态内存中。然而,它们在所有的翻译单位都是全球性的,所以链接器可以看到它们的名字。

这段代码有什么区别吗.

如果您决定将第一段代码链接到另一个具有var1的翻译单元,您将得到一个链接错误。即使其他翻译单元中的var1是全局的,第二段代码也会正确编译。

我知道静态变量不能从任何其他翻译单元访问,但这并不是我真正关心的问题。

内部或外部范围是唯一的区别。有人可能会说,这是对关键字static的误用,但在C标准中是这样的。

票数 4
EN

Stack Overflow用户

发布于 2015-07-22 16:09:48

除了您已经提到的翻译单元可见性之外,没有什么不同。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31568448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档