• extern


    1、用extern将.h中的变量提升为整个项目的全局变量,这样这个.h中的extern的变量就可以在别的文件中使用定义,只要包含头文件即可。这是extern的主要一个作用。

       在text1.h中:

       extern char[6] str;

       在text1.cpp中定义

       str="abcde";

      在其他文件text2.h中只要#include"text1.h"

      就可以直接使用str="defgh";

    2、真理:在头文件中只做声明。

       如果在头文件中也做了定义,如上在text1.h中extern char[6] str="abcde"

      然后再text1.cpp中会包含一次text1.h,就包含一次str的定义

       在text2.h中要是再次包含#include "text1.h"这样str就又定义了一次,会出现错误

    所以真理

    3、在2的基础上,如果非要把定义放在.h中,在text2.h中就不要再#include“text1.h”了

      可以用extern char[6]str,这样只是把text1.h中的str变量扩展到这个text2.h文件中了,但是如果在text2.h中,如果

      要使用text1.h中的其他全局变量和方法,就只能一一extern了,这样会很麻烦

    4、static在声明的时候就要定义,并且static修饰的变量的作用域是本模块,

    test1.h中

     static char[6] str="abcde";

    text1.cpp中#include "text1.h" str="cdefg";

    text2.h中#include "text1.h"  cout<<str<<endl;

    虽然text2中也可以使用str,但是这里的str是把text1中str复制了一份,相当于在自己的范围内又定义了一个变量,恰巧是名字也是str而已

    真理:static变量的声明和定义放在.cpp中,这样可以防止污染别的模块文件

  • 相关阅读:
    P4936 题解
    初赛
    洛谷P2763题解
    探秘最小生成树&&洛谷P2126题解
    洛谷P2630 题解
    洛谷P2125 题解
    洛谷P1510 题解
    洛谷P3572题解
    Codeforces 448C Painting Fence(分治法)
    Codeforces 999F Cards and Joy(二维DP)
  • 原文地址:https://www.cnblogs.com/beijixing135132/p/3240696.html
Copyright © 2020-2023  润新知