const对象默觉得文件的局部变量
const 定义的对象为一个常量不能被改动。
这个想必大家都知道。
这里仅仅是介绍const对象默觉得文件的局部变量
当一个非const变量在一个c或cpp文件里为全局时,它在整个程序中都能够訪问。我们在其它的c或cpp文件要用到这个变量。仅仅须要在文件做合适的声明就能使用。
比如:
main.cpp 中全局变量bufsize
#include <iostream>
using namespace std;
extern void function();
int bufsize = 100;
int main()
{
function();
return 0;
}
function.cpp中声明了bufsize
#include <iostream>
using namespace std;
extern int bufsize;
void function()
{
cout<<"function.cpp***bufsize----------"<<bufsize<<endl;
}
编译执行:
g++ -o main main.cpp function.cpp
./main
function.cpp***bufsize----------100 function.cpp能訪问到main.cpp中bufsize
如今我们将bufsize设置成const对象
main.cpp
#include <iostream>
using namespace std;
extern void function();
const int bufsize = 100;
int main()
{
function();
return 0;
}
function.cpp内容不变
编译执行:
g++ -o main main.cpp function.cpp
/tmp/ccdvo28n.o: In function `function()':
function.cpp:(.text+0xb): undefined reference to `bufsize'
collect2: ld returned 1 exit status
function.cpp中bufsize未定义
稍作改进:
main.cpp
#include <iostream>
using namespace std;
extern void function();
extern const int bufsize = 100;
int main()
{
function();
return 0;
}
function.cpp不变
编译执行:
g++ -o main main.cpp function.cpp
./main
function.cpp***bufsize----------100
执行正常
总结:
定义的非const全局变量。它属于整个程序,其它程序要訪问仅仅要对应的声明就可以。
定义的const全局变量,属于定义的文件,假设想要整个程序都能訪问,则要指定const变量为extern。
const对象默觉得文件的局部变量的更多相关文章
- 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用
[源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, con ...
- const对象默认是static的,而不是extern的
const 和 static 变量,可以放在头文件中 const对象默认是static的,而不是extern的,所以即使放在头文件中声明和定义.多个cpp引用同一个头文件,互相也没有感知,所以不会导致 ...
- (1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍
1.let声明变量,var声明变量,而const声明的常量 2.let与var的区别 let可以让变量长期驻扎在内存当作 let的作用域是分块[ {快1 {快2 } }每个大括号表示一个独立的块 ...
- Hibernate 对象关系映射文件
简介: POJO 类和关系型数据库之间的映射可以用一个 XML 文档来定义 通过 POJO 类的数据库映射文件,Hibernate 可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据 ...
- 文件对象FSO应用 文件对象FSO应用
FileSystemObject对象被用来访问服务器上的文件系统.这个对象能够处理文件.文件夹和目录路径.用它来检索文件系统信息也是可能的. 下面的代码创建了一个文本文件,并写入了一些文本: dim ...
- Python之code对象与pyc文件(三)
上一节:Python之code对象与pyc文件(二) 向pyc写入字符串 在了解Python如何将字符串写入到pyc文件的机制之前,我们先来了解一下结构体WFILE: marshal.c typede ...
- Python之code对象与pyc文件(一)
Python程序的执行过程 我们都知道,C语言在执行之前需要将源代码编译成可执行的二进制文件,也就是将源代码翻译成机器代码,这种二进制文件一旦生成,即可用于执行.但是,Python是否一样呢?或许很多 ...
- 通过jQuery Ajax使用FormData对象上传文件
FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用For ...
- hibernate(四)__由表逆向创建Domain对象和对象关系映射文件
之前我们是手写Domain对象和对象关系映射文件->然后生成数据库中的Table. 现在我们反过来先在数据库中建好Table->然后用工具生成Domain对象和对象关系映射文件. 步骤: ...
随机推荐
- 普天通信JavaEE开发岗面试题
1 EJB中有几种Bean,叙述有状态Bean和无状态Bean的差别. 答:EJB中有Session Bean,Entity Bean,以及 Message Driven Bean.这两种的 Sess ...
- java 入门书籍(java7)
一.Java从入门到精通 <Java从入门到精通(第3版)>从刚開始学习的人角度出发,通过通俗易懂的语言.丰富多彩的实例.具体介绍了使用Java语言进行程序开发须要掌握的知识. <J ...
- Big Number------HDOJ杭电1212(大数运算)
Problem Description As we know, Big Number is always troublesome. But it's really important in our A ...
- .NET泛型03,泛型类型的转换,协变和逆变
协变(Convariant)和逆变(Contravariant)的出现,使数组.委托.泛型类型的隐式转换变得可能. 子类转换成基类,称之为协变:基类转换成子类,称之为逆变..NET4.0以来,支持了泛 ...
- MVC日期格式化,后台使用Newtonsoft.Json序列化日期,前端使用”f”格式化日期
MVC控制器中,经常使用Newtonsoft.Json把对象序列化成json字符串传递到前端视图.当对象中有DateTime类型的属性时,前后台如何处理才能把DateTime类型转换成想要的格式呢? ...
- objective-c block 详解 转
Block Apple 在C, Objective-C, C++加上Block這個延申用法.目前只有Mac 10.6 和iOS 4有支援.Block是由一堆可執行的程式組成,也可以稱做沒有名字的F ...
- 为 UITextField 增加键盘偏移的模板化写法
.h代码 #import <UIKit/UIKit.h> @interface ViewController : UIViewController<UITextFieldDelega ...
- 5. python 文本解析
5. python 文本解析 这一章节我们简单的聊聊文本解析的两种方法: 1.分片,通过分片,记录偏移处,然后提取想要的字符串 例子: >>> line='aaa bbb ccc' ...
- UML状态图
状态图(Statechart digram)是系统分析的一种经常使用工具,系统分析员在对系统建模时,最先考虑的不是基于活动之间的控制流,而是基于状态之间的控制流,由于系统中对象的状态变化最易被发现和理 ...
- [Android Pro] Swift 3.0多线程
本文只介绍Grand Central Dispath(GCD) 中央调度 个人认为一个GCD就够用了,可能是改版或是其他的在找之前写的多线程方法时发现不能用了,看文档之后发现改了,现在看上去更加简单易 ...