zoukankan      html  css  js  c++  java
  • 声明一个全局变量可以跨文件使用---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,多个文件定义会报重复定义的错误

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

  • 相关阅读:
    模块和包专区
    递归函数,三级菜单专区
    内置函数和匿名函数专区
    迭代器和生成器专区
    函数进阶专区
    初始函数专区
    题解 P6282 【[USACO20OPEN]Cereal S】
    题解 P6281 【[USACO20OPEN]Social Distancing S】
    题解 P6281 【[USACO20OPEN]Social Distancing S】
    第5题:棋盘
  • 原文地址:https://www.cnblogs.com/-citywall123/p/12884912.html
Copyright © 2011-2022 走看看