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中,这样可以防止污染别的模块文件

posted @ 2013-08-06 15:45  beijixing135132  阅读(157)  评论(0编辑  收藏  举报