(C++)static限定符的内部链接性及静态持续性

本文探讨了C++中static限定符用于全局变量时的内部链接性和静态持续性。内部链接的变量仅限于当前文件使用,而外部链接的变量可在多个文件间共享。错误示例显示了不同文件中使用相同名称导致的问题,而正确的做法是利用static指定内部链接。通过static,可以在多文件程序中避免名称冲突,并在单个文件内实现数据共享。
摘要由CSDN通过智能技术生成

将static限定符用于作用域为整个文件的变量时,该变量的链接性将为内部的。在多文件程序中,内部链接性和外部链接性之间的差别很有意义。

链接性为内部的变量:只能在其所属的文件中使用。
链接性为外部的变量:可以在其他文件中使用,常规外部变量都具有外部链接性

举个简单的例子:
在xxx.c或者xxx.cpp文件中定义一个全局变量,全局变量加上static时,这个全局变量只能在当前文件中可见。

错误例子:在其他文件中使用相同的名称来表示其他变量。

//file1
int errors = 20;
...

//file2
int errors = 30;
void froobish()
{
	cout << errors;
}

显然这样是错误的。file2中的定义试图创建一个外部变量,因此程序将包含errors的两个定义。

如果文件定义了一个静态外部变量,其名称与另一个文件中声明的常规外部变量相同,则在该文件中,静态变量将隐藏常规外部变量。

正确例子:

//file1
int errors = 20;
...

//file2
static int errors = 30;
void froobish()
{
	cout << errors;
}

因为关键字static指出标识符errors的链接性为内部,因此并非要提供外部定义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄TimTim仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值