lin_angle的专栏

不去尝试永远都只能是失败

正确声明全局变量

通常我们都不太赞成使用全局变量,但有时确实也避免不了。每当使用全局变量或对象时,决不要在头文件中实例化,因为头文件一般都被包含(#include)在几个源文件中。这样,链接器将扫描到相同对象的多个实例并报错。必须在单个源文件中实例化全局变量或对象,只有这样才能保证它只被定义一次,而与工程中使用的源文件数目无关。所有其它的存取该全局对象的源文件和头必须以extern方式来声明。下面是一个例子:

// File a.h
/*仅仅声明; x 的定义在另外一个源文件中*/

extern int x;

struct Counter
{
   Counter() {++x;}
   ~Counter() {--x;}
};

// File b.cpp
int x; //定义全局变量

// File main.cpp
#include "a.h"
int main()
{
   Counter count;
   cout<<"value of x is: "<<x;
}

两个源文件 b.cpp 和 main.cpp 被单独编译。链接时,链接器确定所有定义在b.cpp文件中对x的引用。
 
阅读更多
文章标签: file struct
个人分类: VC基础知识温习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭