C++中如何访问全局变量和全局函数
全局变量和全局函数是相对局部变量和局部函数而言的,不在{}或者for, if 等范围内的都是全局变量或者全局函数,最简单的是在同一个文件中去声明。
例如在mian.cpp中
#include <iostream>
int gResult;
int gAdd(int a, int b) {
return a + b;
}
int main(int argc, const char * argv[]) {
gResult = aAdd(2, 3);
}
这样的话main函数上面的都是都是全局变量和全局函数;在整个文件中都可以调用的到,也就是说全局变量是对其所在的整个文件而言的。
但是问题来了,我们需要使用其他文件中全局变量怎么办,或者说我们需要整个项目中只有唯一的一个全局的变量。
声明的时候是一样的,只是在调用的时候需要用extern关键字在用的文件中重新声明一下就可以了。
例如:
我们在base.cpp中声明一个全局的变量和全局函数
#include <iostream>
#include "base.h"
int gResult;
int gAdd(int a, int b){
return a + b;
}
void print(){
std::cout<<gRedult<<std::endl;
}
现在我们需要在mian.cpp中调用全局变量和全局函数;
int mian(int argc, const char * argv[]) {
//重新声明base.cpp中的全局变量和全局函数;
extern int gResult;
extern int gAdd(int a, int b);
extern void print();
gResult = gAdd(2, 3);
//可以看到两次打印的结果都是5,因为他们操作的是同一个全局变量;
std::cout<<gResult<<std::endl;
print();
}
C++中如何访问全局变量和全局函数的更多相关文章
- 在MFC下如何定义全局变量和全局函数
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行.实际上有多种方法可以实现,这里只介绍两种 ...
- 如何在微信小程序定义全局变量、全局函数、如何实现 函数复用 模块化开发等问题详解
1.如何定义全局数据 在app.js的App({})中定义的数据或函数都是全局的,在页面中可以通过var app = getApp(); app.function/key的方式调用,不过我们没有必要 ...
- 在C++工程中main函数之前跑代码的廉价方法(使用全局变量和全局函数)
// test.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...
- 在vue项目中 如何定义全局变量 全局函数
如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数 定义全局变量 原理: 设置一个专用的的 ...
- 在 Vuejs 项目中如何定义全局变量 全局函数
在 Vuejs 项目中如何定义全局变量 全局函数 在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录 token, 用户的地址信息等,这时候就需要设置一波全局变量和 ...
- python中的作用域以及内置函数globals()-全局变量、locals()-局部变量
在python中,函数会创建一个自己的作用域,也称为为命名空间.这意味着在函数内部访问某个变量时,函数会优先在自己的命名空间中寻找. 通过内置函数globals()返回的是python解释器能知道的变 ...
- vue中html模板使用绑定的全局函数
我们知道在script中使用vue绑定的全局函数时, 我们需要用这种方式使用: this.Util.Fun(e) 那在模板中, 比如v-if中想使用Fun函数怎么办呢?你应该这样做 <i v-i ...
- jQuery全局函数
全局函数是对jQuery对象的扩展,其中扩展方法包括: 一,extend扩展: //调用全局函数$(document).ready(function () { $.myFunction(); $.my ...
- JavaScript全局函数
JavaScript 中包含以下 7 个全局函数,用于完成一些常用的功能(以后的章节中可能会用到):escape( ).eval_r( ).isFinite( ).isNaN( ).parseFloa ...
随机推荐
- telegraf、influxDB、Grafana的安装与基本使用
目的理解influxDB的数据收集原理和方法为使用grafana分析数据及展示结作好准备介绍[收集数据] Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 Inf ...
- centos7配置上网
过程请看图: just so so!
- [机器学习笔记]主成分分析PCA简介及其python实现
主成分分析(principal component analysis)是一种常见的数据降维方法,其目的是在“信息”损失较小的前提下,将高维的数据转换到低维,从而减小计算量. PCA的本质就是找一些投影 ...
- centos-7安装redis服务
一.Redis下载 在centOS里通过wget下载redis wget http://download.redis.io/releases/redis-4.0.11.tar.gz 具体版本下载地址 ...
- Python内置模块与标准库
Python内置模块就是标准库(模块)吗?或者说Python的自带string模块是内置模块吗? 答案是:string不是内置模块,它是标准库.也就是说Python内置模块和标准库并不是同一种东西. ...
- Wiggle Sort I & II
Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] < ...
- mac 安装gevent报错
运行pip install gevent报错 错误信息如下 xcrun: error: invalid active developer path (/Library/Developer/Comman ...
- Python学习系列之(二)图解Windows8.1下安装Django
一. 下载 去官网下载https://www.djangoproject.com/download/最新版,最新版本是1.6 二. 安装: 将下载下来的Django-1.6.tar.gz解压到D盘,接 ...
- Android P 功能和 API
Android P 功能和 API Android P 为用户和开发者引入众多新特性和新功能. 本文重点介绍面向开发者的新功能. 要了解新 API,请阅读 API 差异报告或访问 Android AP ...
- SqlServer 批量备份
-- 实现方式1:使用游标 DECLARE @FileName VARCHAR(200), @CurrentTime VARCHAR(50), @DBName VARCHAR(100), @SQL V ...