C++中extern使用
C++中extern是指全局的意思。它一般有两个方面的用途:
1、声明变量
首先说一下声明和定义的区别:
①变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。
②变量的声明:用于向程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过使用extern 关键字声明变量名而不定义它。例如:
extern int i; //声明一个变量i,但是并没有定义
int i; //声明并且定义了一个变量i
extern 声明不是定义,也不分配存储空间。事实上,它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。
只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。初始化式必须要有存储空间来进行初始化。如果声明有初始化式,那么它可被当作是定义,即使声明标记为 extern例如:
extern int i = 0;
虽然使用了 extern ,但是这条语句还是定义了i,分配并初始化了存储空间。只有当extern声明位于函数外部时,才可以含有初始化式。
因为已初始化的extern声明被当作是定义,所以该变量任何随后的定义都是错误的:例如:
extern int i = 0;
int i; //报错,重复的定义
同样,随后的含有初始化式的extern声明也是错误的:
extern int i = 0; // 定义
extern int i; // 只声明,正确
extern int i = 0; // 重复定义,错误
更多关于extern const的内容可以参考https://blog.51cto.com/u_6924918/1266936
C++中extern使用相关推荐
- C/C++中extern关键字详解
1 基本解释 :extern可以置于变量或者函数 前,以标示变量或者函数的定义在别的文件中 ,提示编译器遇到此变量和函数时在其他模块中寻找其定义 .此外extern也可用来进行链接指定. 也就是说ex ...
- C++中extern “C”含义深层探索(zz)
1.引言 C++语言的创建初衷是"a better C",但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++ ...
- Re: Programming C/C++中extern C含义深层探索
1.引言 C++语言的创建初衷是"a better C",但是这并不意味着C++中类似C 语言的全局变量和函数所采用的编译和连接方式与C 语言完全相同.作为一种欲与C 兼容的语言, ...
- C/C++中extern关键字详解与应用
1.引言:多文件结构中,对全局变量(global variance)的体会 全局变量的好处是毋庸置疑的.方便在各个子模块和局部域中使用.所以,全局变量很适合做众多模块之间的公共交流与通信. 在单文件结 ...
- C/C++中extern的用法 ?
C/C++中extern的用法 简介 extern修饰变量的声明. extern修饰函数声明. 使用extern和包含头文件来引用函数有什么区别呢? extern修饰符可用于指示C或者C++函数的调用 ...
- C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是"a better C",但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++ ...
- C/C++中extern关键字详解[zz]
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...
- C++中extern关键字使用 http://blog.csdn.net/sruru/article/details/7951019
C++中extern关键字使用 分类: C++ 语法 2012-09-06 15:37 327人阅读 评论(0) 收藏 举报 c++编译器 chapter 1 . extern关键字的作用 exter ...
- [转]C++中extern C的含义
注:本文来自Internet.原文作者已无从考证.若您是原文作者,请给出具体的证明后,我将及时标明作者及出处. 1.引言 C++语言的创建初衷是"a better C",但是这并不 ...
最新文章
- DDD领域驱动设计基本理论知识总结
- BigData之Hadoop:Hadoop的简介、深入理解、下载、案例应用之详细攻略
- java和javaweb的区别_javaee, javaweb和javase的区别以及各自的知识体系
- 云计算三大主流阵营的竞争与合作
- 文本数据增强+NER
- 一步一步搭建mysql_Linux——搭建PHP开发环境第一步:mysql
- 360浏览器保存的html没有图标,电脑360浏览器图标不见了怎么办
- Redis数据结构之SDS
- 您的自动化测试糟透了
- handsome主题添加服务器信息,handsome主题部分常用markdown语法
- MacOS 苹果 快捷键
- Cascade R-CNN: Delving into High Quality Object Detection(个人学习笔记)
- 互联网快讯:百世供应链发力汽配赛道;极米NEW Z6X升级版Z6X Pro上线;美的发布方舱医院集成化解决方案
- H264系列(7):H.264与MPEG4区别
- 电影——《小萝莉的猴神大叔》
- LPN管理中涉及到的LPN过多不能释放,导致在调拨环节零散LPN太多,如何解决该问题?
- Java Back Propagation Neural Network(JAVA反向传播神经网络)
- MacOS 软件版本更新Monterey12.1版之后L2TP无法正常访问内网服务解决方案
- 【java基础知识】——jdk和jre的区别
- Win10无法输入中文的解决方法
热门文章
- linux下时区设置和时间同步
- 4 三元表达式 列表解析 生成器表达式
- 夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
- encodeURI 和 encodeURIComponent
- UICollectionView的使用方法
- poj_2762,弱连通
- go linux 源码编译环境,Linux 源码安装 GO 环境
- python tornado教程_Tornado 简单入门教程(零)——准备工作
- c语言判断字符串是不是回文_125. 验证回文串
- 织梦 html 优酷,让织梦CMS的后台编辑器支持优酷视频