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对象和对象关系映射文件. 步骤: ...
随机推荐
- as 汇编器
[root@localhost ~]# cat .s .file "write.s" .section .rodata hello: .string "hello, wo ...
- CSS Flex布局属性整理
Flex布局 display: flex; 将对象作为弹性伸缩盒展示,用于块级元素 display: inline-flex; 将对象作为弹性伸缩盒展示,用于行内元素 注意兼容问题: webkit内核 ...
- Entity Framework实现事务回滚
在使用Entity Framework为主从表添加数据,当一个表添加数据成功,另一个表添加数据失败,这时候就需要用到事务回滚. 比如有以下关系的2张表. 客户端使用TransactionScope类可 ...
- NativeXml
NativeXml GITHUB: https://github.com/kattunga/NativeXml THIS IS A FORK WITH SOME FIXES AND IMPROVEME ...
- go test 单元函数测试
首先安装单元测试包,go get github.com/smartystreets/goconvey/convey 源程序如下,定义了加减乘除4个函数 package test222 import ( ...
- LoadTestAgentResultsLateException in VS2010
遇到报错, 首先得先仔细读读人家给的出错信息. 而不是先怀疑是自己什么地方弄错了, 胡乱修改. 比如说, 遇到下面的报错: LoadTestAgentResultsLateException R ...
- MediaPlayer 状态机 API 详解 示例
简介 public class android.media.MediaPlayer extends Object implements VolumeAutomation 可能需要的权限: One ma ...
- 【手势识别】简介 GestureDetector ScaleGestureDetector
2017-3-6 单点触摸手势识别器GestureDetector 当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等.一般情况下,我们可以通过View或Activ ...
- IOS之导航控制器
UINavigationController是用于构建分层应用程序的主要工具,主要采用栈形式来实现视图.任何类型的视图控制器都可放入栈中.在设计导航控制器时需要指定根视图即用户看到的第一个视图.根视图 ...
- 思维导图软件xmind和mindmanager哪个更好
思维导图是一种将放射性思考具体化的方法,可以将人们的创造性思维及时捕捉并呈现,目前便捷的网络为人们带来了众多的思维导图软件,而在这些软件中只有亲身实践体验过,才能知道到底思维导图哪个好,哪个又适合自己 ...