C++中extern的作用

您所在的位置:网站首页 当前目录的定义 C++中extern的作用

C++中extern的作用

2023-03-24 06:33| 来源: 网络整理| 查看: 265

先来介绍一下C++中的单定义规则:变量只能有一次定义。

为了满足单定义规则,C++提供两种变量声明:

一种是定义声明(defining declaration)简称定义,给变量分配内存空间; 另一种是引用声明(referencing declaration)简称声明,不给变量分配空间,因为它引用已有变量。

在全局变量中,引用声明使用extern关键字且不进行初始化,否则声明为定义,导致分配空间:

int x; // definition x is 0 extern int y; //y defined in elsewhere extern char c = ‘a’; // definition, c is initialized

extern关键字的作用:

告诉编译器存在着一个变量或者一个函数,如果在当前编译语句的前面没有找到相应的变量或者函数,会在当前文件的后面或者其他文件中有定义。

例子: 全局变量/函数 A.cpp

int i = 10;

B.cpp

int i; void main() { }

在A.cpp中定义一个全局变量i,在B中也定义了一个全局变量i,编译能正常通过,但是链接的时候会报错: 在这里插入图片描述 原因:在编译阶段,各个文件中定义的全局变量相互是透明的,编译A时觉察不到B中也定义了i,同样,编译B时觉察不到A中也定义了i。

但是到了链接阶段,要将各个文件的内容“合为一体”,因此,如果某些文件中定义的全局变量名相同的话,在这个时候就会出现错误,也就是上面提示的重复定义的错误。

因此,各个文件中定义的全局变量名不可相同。

如果一个文件中定义的全局变量,可以在整个程序的任何地方被使用。那么在A.cpp定义的全局变量,B.cpp可以直接使用吗?

A.cpp

int i = 10;

B.cpp

int main() { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3