首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全局变量和静态全局变量

全局变量和静态全局变量
EN

Stack Overflow用户
提问于 2021-12-29 17:53:50
回答 2查看 167关注 0票数 3

全局变量/const和全局静态变量/const在C++上有什么不同吗?在cpp文件或头文件中声明。

代码语言:javascript
复制
static const int x1 = someFunction(5);
const int x2 = someFunction(6);
static int x3 = someFunction(5);
int x4 = someFunction(6);

int main()
{
...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-29 18:35:31

案例一:用于const对象

相似性

在这两个版本中,变量都有内部链接。也就是说,x1x2都有内部联系。

差异

对于static const int x1,变量是显式静态,而对于const int x2,变量是隐式静态。但请注意,它们仍然有内在的联系。

案例二:对于非连续对象

相似性

x3x4都是非can ,这意味着我们可以修改它们。

差异

变量x3具有内部链接,而变量x4具有外部链接

票数 2
EN

Stack Overflow用户

发布于 2021-12-29 18:25:52

注意:这只在变量不是const时才适用。我已经根据OP的要求取消了这个答案,

static int x1有内部链接,这意味着它只能通过名称从定义在其中的翻译单元(这个cpp文件)访问。如果此行位于头文件中,则包含头文件的每个文件都将得到变量的自己的副本。

int x2具有外部链接,这意味着另一个翻译单元(cpp文件)可以在全局范围内拥有extern int x2;并访问变量。如果这一行位于头文件中,并且多个文件包含头文件,则违反了一种定义规则,因为每个包含只定义一次变量。您必须在头文件中使用extern int x2;,然后在单个cpp文件中使用int x2 = ...;以避免多个定义。

请参阅持续时间

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

https://stackoverflow.com/questions/70523134

复制
相关文章

相似问题

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