关于extern的用法
extern表示该变量或者函数时在另一个地方定义了。
在C++编程中,如果将程序分为多个文件,则需要有在文件间共享代码的方法,这时如果一个变量或者函数需要在多个文件中使用,则可以使用extern来声明该变量或者函数。声明(declaration)使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明,而定义(definition)负责创建与名字关联的实体。变量声明规定了变量的类型和名字,在这一点和定义与之相同。但是除此之外,定义还申请了存储空间,也可能会为变量赋一个初始值。
extern int i;//仅仅是声明了整型变量i
int i;//声明并且定义了整型变量i
extern int i = 0;//定义了整型变量i,并且赋值为0,等价于int i = 0;
注:在函数内部,如果试图初始化一个由extern关键字标记的变量,将引发错误。
一般使用extern的过程如下:
这里如果我们需要在a.cpp中使用b.cpp中定义的变量i,则可以按如下操作:
1.在b.cpp中给出该变量的定义, int i;
2.在b.h中对该变量进行声明,在变量前加extern int i;
3.在a.cpp中声明该变量,extern int i;
这时如果我们再a.cpp中对该变量赋值为123,那么在b.cpp中可以得到该变量等于123.
对于extern的用法,具体还是要看实际中需要该变量做什么,这里只是对extern做了简单的介绍。
关于extern的用法的更多相关文章
- extern "c"用法解析
转自: extern "c"用法解析 - 简书 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟是一种面向对象的程序设计语言, ...
- 《OOC》笔记(1)——C语言const、static和extern的用法
<OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用c ...
- extern的用法
extern作为外部函数声明的用法: 1. 可以扩展函数的应用范围: 107.h #ifndef _107H_ #def _107H_ extern void func(); #endif 107.c ...
- extern "C" 用法解析
extern "c"用法解析 作者 作者Jason Ding ,链接http://www.jianshu.com/p/5d2eeeb93590 引言 C++保留了一部分过程式语言的 ...
- 变量的声明和定义以及extern的用法
变量的声明和定义以及extern的用法 变量的声明不同于变量的定义,这一点往往容易让人混淆. l 变量 ...
- static和extern的用法小结
以前写程序是,基本不管static和extern,一个工程文件也只有一个c文件.今天尝试用多个文件来写,自然就涉及到这两个关键词的使用,自己查了些资料,并且做了些实验,总结如下. extern的用法 ...
- 命名空间 extern的用法 static全局变量
std是标准库中的命名空间: 关于extern的用法可以参考文献http://blog.163.com/sunjinxia%40126/blog/static/94984879201312145021 ...
- ZT --- extern "C"用法详解 2010-08-21 19:14:12
extern "C"用法详解 2010-08-21 19:14:12 分类: C/C++ 1.前言: 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus ...
- C++基础--extern的用法
extern作为外部变量扩展的用法: 1. 主要作用是扩展变量或者函数的应用范围: 2. extern的用法是相对于全局变量而言: 3. 在看到extern这个关键字的时候说明这个变量已经在别的源文件 ...
随机推荐
- JMM规范
JMM规范: The rules for happens-before are: Program order rule. Each action in a thread happens-before ...
- #cat /proc/meminfo 详解
$cat /proc/meminfoMemTotal: 2052440 kB //总内存MemFree: 50004 kB //空闲内存Buffers: ...
- postgresql to_char 问题
select create_time from xxx; select to_char(create_time,'yyyy-MM-dd HH24:mm:ss') as create_time fr ...
- Github Page 绑定域名
http://kyle.xlau.org/posts/github-cname.html CNAME 创建一个CNAME文件,内容是你的域名,如: xlau.org 然后把此文件添加到Github仓库 ...
- Ubuntu本地uwsgi配Django问题的解决
版本Ubuntu14.04,Django1.6.5 ubuntu本地Uwsgi调Django可能会报错: -- unavailable modifier requested: 0 -- 解决方法:先安 ...
- jvm内存结构(一)
学习之余,整理了下JVM的资料 堆: 需要重点关注的一块区域,涉及到内存的分配与回收 方法区: 用于存储已经被虚拟机加载的类信息.常量.静态变量等数据,也叫永久区 常量池: 用于存放编译期生成的各种字 ...
- Java经验杂谈(2.对Java多态的理解)
多态是面向对象的重要特性之一,我试着用最简单的方式解释Java多态: 要正确理解多态,我们需要明确如下概念:・定义类型和实际类型・重载和重写・编译和运行 其中实际类型为new关键字后面的类型. 重载发 ...
- ArcCore重构-头文件引用问题的初步解决
基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5 基本问题 1. 头文件引用混乱,所有头文件通过从搜索路径(-I)中引用,存在名称污染问题,需加入路径信息: ...
- 完全关闭Hyper-v的方法
众所周知Hyper-v和vmware有冲突,开启Hyper-v功能vmware就不能使用,但即使关闭了也是如此,这是因为功能没有被完全关闭,这里整理下方法,我自己在两台机子亲测有效. win+x,a, ...
- Gradle连接Maven仓库直接从仓库 更新JAR包
一般情况下服务器编写好服务程序 会用Maven打成JAR包,放在Maven仓库里管理,我们在用的时候直接引用就可以, 那么如何在Gradle项目中使用本地的 或者远程的Maven仓库呢 当M ...