读书人

C++中关于全局变量储存类别和作用域的

发布时间: 2013-03-27 11:22:42 作者: rapoo

C++中关于全局变量存储类别和作用域的探讨
根据我目前的知识,如果C++想使用全局变量,则一般使用exter和static。
其中extern用于将某个全局变量的定义声明到其他编译模块从而可以被访问和使用。
而static是说这个全局变量只能被本编译模块使用。
问题:
如果一个全局变量只在本编译模块使用,因为全局变量原本就是静态存储的,他是不是可以不用static修饰。如果不用static修饰全局变量,那和用static修饰的全局变量有何区别?

static 的全局变量只能在本文件使用、是用的static的限制作用域的功能、C语言里面内核函数基本都是这样的、可以避免很多不必要的问题、后来C++ 引进using namespace 之后也跟这个差不多

extern 修饰的全局变量是导入一个外部(其他文件.c\.cpp文件定义的非static 修饰的全局变量,这是一般的做法。最好是在.cpp/.c文件定义之后在.h文件里面用extern 再声明一次 那么以后使用的时候只要包括头文件 不需要再用extern导入)

简单说:static int a; 当前文件可见

int a;全局的,其他文件使用时,extern int a;

读书人网 >C++

热点推荐