C/C++实现跨文件共享全局变量详解

 更新时间:2024年01月26日 09:10:55   作者:乱蜂朝王  
这篇文章主要为大家详细介绍了C/C++如何实现跨文件共享全局变量,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下

为了实现跨文件共享全局变量,我们可以使用 extern 关键字。extern 关键字用于声明一个变量,该变量在其他地方已经定义。它告诉编译器这个变量在其他文件中已经定义了,不需要重新分配内存空间,只需要引用即可。

效果

项目

代码 

Common.h

#pragma once
 
#include <iostream>
 
using namespace std;
 
struct para {
 
    bool  state;
    int   num;
    string name;
};
 
//声明全局变量
extern  para  g_static_para;

Common.cpp

#pragma once
#include "Common.h"
 
//定义全局变量
para  g_static_para;

init_class.h

#pragma once
 
#include <iostream>
#include "Common.h"
 
using namespace std;
 
class init_class
{
 
public:
 
    void init();
 
};

init_class.cpp

#include "init_class.h"
#include "Common.h"
 
 
void init_class::init()
{
    cout << "参数初始化 全局变量 g_static_para" << endl;
    g_static_para.state = true;
    g_static_para.num = 20;
    g_static_para.name = "测试信息2";
}

use_class.h

#pragma once
 
#include <iostream>
#include "Common.h"
 
using namespace std;
 
class use_class
{
 
public:
 
    void print();
 
};

use_class.cpp

#include "use_class.h"
 
void use_class::print() {
 
    cout << "打印参数 全局变量 g_static_para" << endl;
    cout << "g_static_para.state:" << g_static_para.state << endl;
    cout << "g_static_para.num:" << g_static_para.num << endl;
    cout << "g_static_para.name:" << g_static_para.name << endl;
}

ConsoleApplication1-test.cpp

#pragma once
#include <iostream>
#include "Common.h"
#include "init_class.h"
#include "use_class.h"
 
using namespace std;
 
int main()
{
    std::cout << "Hello World!\n";
 
    init_class ic;
    use_class uc;
 
    std::cout << "----------------------\n";
    g_static_para.state = false;
    g_static_para.num = 10;
    g_static_para.name = "测试信息1";
    uc.print();
 
    std::cout << "----------------------\n";
    ic.init();
    std::cout << "----------------------\n";
    uc.print();
}

到此这篇关于C/C++实现跨文件共享全局变量详解的文章就介绍到这了,更多相关C++跨文件共享全局变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt+QListWidget实现气泡聊天界面(附源码)

    Qt+QListWidget实现气泡聊天界面(附源码)

    由于最近的项目需要,做了些相关IM的工作。所以聊天框也是必不可少的一部分。本文以QListWidget+QPainter绘制的Item做了一个Demo。该Demo只是做一个示例,感兴趣的可以了解一下
    2022-12-12
  • C++ 双向循环链表类模版实例详解

    C++ 双向循环链表类模版实例详解

    这篇文章主要为大家详细介绍了C++ 双向循环链表类模版实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C语言实现简易网络聊天室

    C语言实现简易网络聊天室

    这篇文章主要为大家详细介绍了C语言实现简易网络聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 如何使用C语言实现细菌的繁殖与扩散

    如何使用C语言实现细菌的繁殖与扩散

    这篇文章主要为大家详细介绍了C语言实现细菌的繁殖与扩散,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 基于WTL中使用双缓冲避免闪烁的解决方法

    基于WTL中使用双缓冲避免闪烁的解决方法

    本篇文章是对WTL中使用双缓冲避免闪烁的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • sigsetjmp的用法总结

    sigsetjmp的用法总结

    sigsetjmp()会保存目前堆栈环境,然后将目前的地址作一个记号,而在程序其他地方调用siglongjmp()时便会直接跳到这个记号位置,然后还原堆栈,继续程序的执行
    2013-09-09
  • C语言详细讲解注释符号的使用

    C语言详细讲解注释符号的使用

    C语言的注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不作处理
    2022-04-04
  • C++实现LeetCode(61.旋转链表)

    C++实现LeetCode(61.旋转链表)

    这篇文章主要介绍了C++实现LeetCode(61.旋转链表),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言中顺序栈和链栈的定义和使用详解

    C语言中顺序栈和链栈的定义和使用详解

    这篇文章主要为大家详细介绍了C语言中顺序栈和链栈的定义和使用,文中的示例代码讲解详细,对我们学习C语言有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-10-10
  • C++双向链表实现简单通讯录

    C++双向链表实现简单通讯录

    这篇文章主要为大家详细介绍了C++双向链表实现简单通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05

最新评论