C++ 全局变量的跨文件使用

这篇具有很好参考价值的文章主要介绍了C++ 全局变量的跨文件使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在写C++工程文件的时候,往往会用到一些所有类都使用的数据,比如数据文件等,一种写法是写成静态类,调用数据时使用类名加属性名的形式,另一种时写成全局变量的形式。

C++工程组织结构是按照xx.h文件中写函数/类的声明,xx.cpp文件中写函数的定义,所以对于全局变量而言,比较合适的写法是为这些全局变量专门建立一个文件对。


一、extern的使用

全局变量在工程中往往是跨文件使用的,比如在a.h中定义的变量要在b.cpp,c.cpp文件中使用。

//a.h
using namespace std;
extern int num_a;
//b.cpp
#include "a.h"
void print(){
	cout<<num_a<<endl;
}

如果此时在全局变量num_a声明的时候没有添加修饰词extern则不能跨文件调用。

二、容易犯的错误

在使用全局变量前,要注意满足 “先声明,后定义,再使用”的原则,即在a.h中声明了num_a变量,需要在a.cpp文件中赋值/定义。定义时不需要再写extern,但仍需写int。(事实上在其他任何一个cpp文件中定义都可以,不过最好在同名的文件中方面debug)。

//a.cpp
#include "a.h"
int num_a=10;

常见的错误
错误1:未在cpp中定义就直接使用。这种通常会报错为 “”找不到xx变量“
错误2:直接在a.h中定义,即

using namespace std;
extern int num_a=10;

如果仅有一个cpp文件include了a.h可能不会报错,当有多个cpp文件include这个头文件,则会报 “变量重复定义”的错误。
需要区分的是,当变量定义在类内时,是可以直接赋值的。例如:文章来源地址https://www.toymoban.com/news/detail-442552.html

using namespace std;
class test{
private:
	int num_a=10;
public:
	test();
}
```


到了这里,关于C++ 全局变量的跨文件使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++全局变量extern

    extern 是 C++ 中的一个,用于声明一个变量或函数是在其他文件中定义的。它的作用是告诉编译器在链接时在其他文件中寻找该变量或函数的定义。 在 C++ 中,如果一个变量或函数在多个文件中使用,那么就需要在每个文件中都声明一次该变量或函数。这时就可以使用

    2024年02月08日
    浏览(35)
  • c++静态变量成员函数和全局函数的区别

    静态成员函数和全局函数在某些方面是相似的,但它们有一些关键的区别。 静态成员函数是与类相关联的函数,但它们不依赖于特定的类实例 。这意味着它们可以 在没有类实例的情况下被调用 ,并且没有隐含的this指针。静态成员函数可以通过类名直接调用,例如: 静态成

    2024年02月08日
    浏览(48)
  • [开发语言][c++]:Static关键字和全局变量

    写在前面: 如果您只是想回顾或了解一下static和全局变量的异同点,那么下面的总结将满足您的需求。 如果您是一位初学者或对二者的使用模棱两可,建议您读完该篇文章,相信这一篇将解答完您对于static以及全局变量的所有疑惑。 如有问题或建议欢迎评论 or 私信

    2024年01月20日
    浏览(44)
  • 【Express.js】全局变量与配置文件

    通常我们会将一些项目的配置信息写在一个文件内,然后读入内存并使用。在 express 中使用全局变量有多种方案,我们一起看看有哪些常用的方案 拷贝第一节的HelloWorld项目 准备一个Resp.js模块: 在 global 对象中挂载我们需要全局共享的量,比如我们想要挂载一个全局的confi

    2024年02月16日
    浏览(27)
  • Python中如何实现跨文件全局变量的访问?

    Python中如何实现跨文件全局变量的访问? 在Python开发中,我们常常需要在多个文件中访问同一个全局变量。但是由于Python的作用域规则,我们无法直接在其他文件中使用没有声明过的变量。那么如何才能实现在不同文件中共享同一个全局变量呢?本文将为你详细介绍Python中跨

    2024年02月10日
    浏览(29)
  • 【微信小程序】在WXML文件中显示JS文件中全局变量

    我们知道在wxml中可以通过数据绑定的方法来获取到js文件中data里面的数据,并且显示到wxml界面,那么我们该如何在wxml中显示js文件里面的全局变量呢? 在wxml种我们可以显示js代码中data代码段中的变量。 具体的操作是: 1.在js中添加data字段以及相应的格式,并在data字段中创

    2024年02月04日
    浏览(52)
  • Apipost全局变量和环境变量的使用

    什么是全局变量? 全局变量跟环境变量作用域不同。全局变量不受当前环境的影响,只要是在同一个项目下,该变量都会生效。 环境变量和全局变量的调用方法都是一样的 {{变量名}} 全局变量的定义 目前通过脚本定义全局变量。 例如我们在预执行脚本中定义一个全局变量

    2024年02月09日
    浏览(29)
  • C语言编程技巧 全局变量在多个c文件中公用的方法

    在使用C语言编写程序时,经常会遇到这样的情况:我们希望在头文件中定义一个全局变量,并将其包含在两个不同的C文件中,以便这个全局变量可以在这两个文件中共享。举个例子,假设项目文件夹\\\"project\\\"下有三个文件:main.c、common.c和common.h。在这种情况下,我们希望声明

    2024年02月14日
    浏览(26)
  • 微信小程序 使用全局变量

    微信小程序里面有个 app.js ,我们可以在这个里面设置全局变量, 全局变量的定义:  globalData: {         userInfo: null,         tempFilePathslist: []     }  全局变量的获取: 在 app.js 文件中,直接使用,如: var gettempFilePathslist = this.globalData.tempFilePathslist 在 其他非app

    2024年02月02日
    浏览(34)
  • Postman 使用之全局变量管理

    前言 平常在请求接口的时候,我们不可避免地都会遇到一个参数值在很多地方用到的场景,例如:在登陆后,后续接口请求的请求头中都必须添加一个 token,如果我们写死一个 token 的话,后续重新登陆后/token失效后再去替换这个token是繁琐且没有意义的。 我们完全可以设定

    2024年01月25日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包