• 声明一个全局变量可以跨文件使用---extern的使用


    变量定义

    变量定义使用“数据类型+变量名称”的形式,编译器需要给他分配内存单元的;

    变量声明----声明的时候不能赋初值,否则就变成定义了

    变量声明使用“extern 变量类型+变量名称”的形式,是告诉编译器我这个变量将在其他外部c文件中定义,我这里只是在外部用它。编译器就不给他分配内存空间,而等到真正遇到变量定义的时候再给他分配内存空间。

    使用关键字extern可以实现全局变量的跨文件使用

    一共有五个文件,分别是main.cpp、A.h、A.cpp、B.h、B.cpp

    1、在A.h中声明一个变量为外部全局变量

    #ifndef A_H
    #define A_H
    //声明变量为外部变量
    extern int val;
    void GetNum_A();
    #endif 

    2、在A.cpp文件中定义和初始化全局变量(注意:如果定义在局部变量里面就不能被其它文件调用了)

    #include<iostream>
    #include"A.h"
    using namespace std;
    int val = 11;
    void GetNum_A()
    {
        cout << val << endl;
    }

    3、在B.h文件中导入A.h的头文件

    #ifndef B_H
    #define B_H
    #include"A.h"
    void GetNum_B();
    #endif 

    4、在B.cpp文件中导入B.h的头文件(或者直接导入A.h)

    #include<iostream>
    #include"B.h"
    using namespace std;
    int val = 13;
    void GetNum_B()
    {
        //val++;
        cout << val << endl;
    }

    5、在main.cpp文件中使用

    #include<iostream>
    #include"A.h"
    #include"B.h"
    using namespace std;
    int main()
    {
        cout << "GetNum_A=" ;
        GetNum_A();
        cout << "GetNum_B=";
        GetNum_B();
        system("pause");
        return 0;
    }

    输出

    注意:只能在一个文件中去定义共享的变量val,多个文件定义会报重复定义的错误

    也可以自己在类里面封装一个方法去获取变量,在使用的时候直接调用这个方法就可以了

  • 相关阅读:
    mybatis ForEach Collection集合等规范解析(转)
    IntelliJ IDEA怎么安装
    django数据库基本操作-增删改查(tip)-基本
    解决Django中在.js文件中用ajax请求后端,找不到CSRF问题
    jQuery判断当前元素是第几个元素&获取第N个元素
    python 判断字符串是否为空用什么方法?
    jq 跳转方式汇总
    SwitchOmega的详细配置——for Windows
    ubuntu怎用使用命令搜索软件源中的软件
    ubuntu16.04中文乱码解决方案
  • 原文地址:https://www.cnblogs.com/-citywall123/p/12884912.html
Copyright © 2020-2023  润新知