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对象和对象关系映射文件. 步骤: ...
随机推荐
- HttpPost+json请求---服务器中文乱码及其他
好凌乱的题目,只是一些功能点的总结咯. 首先构造一个json对象用于存放数据,如果光加上header为utf-8就能解决中文就大错特错了... json对象可以put变量,也可以put对象.取的时候o ...
- Windows Performance Toolkit
http://bigasp.com/archives/606 https://randomascii.wordpress.com/category/xperf/ ADK 8.0 (C:\Progra ...
- 【《Objective-C基础教程 》笔记ch03】(四)OC中的OOP
一.声明类接口步骤: 1.声明一个类接口,使用@interfacekeyword加上类名称. 2.用 { 实例变量 } 来定义各种数据成员. 3.方法声明,採用中缀符语法声明一个c函数,用到了冒号 ...
- 如何在IE11中开启WebGL暨微软和WebGL的恩怨情仇录
正如我们上周报道的,国外开发者Francois Remy在泄露版Windows Blue附带的Internet Explorer 11中发现,WebGL接口已经封装完成,但功能上还未能开放支持.在这之 ...
- 转 Objective-C中不同方式实现锁(一)
为什么需要使用锁,当然熟悉多线程的你,自然不会对它觉得陌生. 那你在代码中是否很好的使用了锁的机制呢?你又知道几种实现锁的方法呢? 今天一起来探讨一下Objective-C中几种不同方式实现的锁,在这 ...
- andriod 获得MP4时长
//获得MP4时长 private int getTimeLong(String videoPath) { MediaMetadataRetriever retr = new MediaMetadat ...
- EF三种加载方法
EF性能之关联加载 鱼和熊掌不能兼得 ——中国谚语 一.介绍 Entity Framework作为一个优秀的ORM框架,它使得操作数据库就像操作内存中的数据一样,但是这种抽象是有性能代价的,故鱼和 ...
- python笔记28-lxml.etree爬取html内容
前言 本篇继续lxml.etree学习,在线访问接口,通过接口返回的html,解析出想要的text文本内容 环境准备: python 3.6 lxml requets 定位目标 爬取我的博客首页htt ...
- 比較两个 List 的值是否相等
public static <T extends Comparable<T>> boolean compare(List<T> a, List<T> b ...
- Spring-3.2.5 + Quartz-2.2.1 集群实例(Tomcat+Memcached+Quartz集群session共享)
本例中我启动了两个Tomcat作效果测试,先看效果图: 现在我们关闭一个Tomcat 注意红线的位置和设置的参数有关 #org.quartz.jobStore.clusterCheckinInterv ...