正确声明全局变量

原创 2007年09月19日 09:48:00
通常我们都不太赞成使用全局变量,但有时确实也避免不了。每当使用全局变量或对象时,决不要在头文件中实例化,因为头文件一般都被包含(#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的引用。
 

全局变量的正确声明

造成LNK2005错误主要有以下几种情况:     1.重复定义全局变量。可能存在两种情况:     A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错...
  • tomorrowsprogress
  • tomorrowsprogress
  • 2009年06月03日 17:46
  • 7030

c++全局变量的正确声明

C++中全局变量声明错误情况 造成LNK2005错误主要有以下几种情况:      1.重复定义全局变量。可能存在两种情况:      A、对于一些初学编程的程序员,有时候会以为需要使用...
  • u011555996
  • u011555996
  • 2016年04月12日 10:35
  • 1665

在头文件声明全局变量和创建extern

转自:http://blog.csdn.net/fengyu09/article/details/9929603
  • scliu12345
  • scliu12345
  • 2014年09月13日 15:40
  • 832

C++全局变量的声明与定义

1. header1.h中声明全局变量,header1.cpp中定义全局变量 // header1.h #ifndef HEADER1_H_ #define HEADER1_H_ extern in...
  • qq_34581491
  • qq_34581491
  • 2016年11月09日 23:26
  • 890

bufferedreader的用法

package com.test.filetest; import java.io.BufferedReader; import java.io.File; import java.io.FileR...
  • jianghuihong2012
  • jianghuihong2012
  • 2014年09月22日 15:57
  • 1160

cocos2dx 定义全局变量(C++)

cocos2dx 定义全局变量 C+
  • u013174689
  • u013174689
  • 2014年08月07日 20:26
  • 2901

Python 中全局变量的使用说明

在开发工作中全局变量虽然不常使用,但是Python中使用全局变量存在需要特殊说明的地方(使用关键词声明,这与PHP有类似之处),因此在这里记录下来: G_CONST_TEST = 0 def ...
  • cnmilan
  • cnmilan
  • 2013年06月21日 21:27
  • 587

新变量声明let

很多语言中都有块级作用域,但js没有,它使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域。用var声明的变量具有变量提升(declaration hoi...
  • sinat_27346451
  • sinat_27346451
  • 2017年08月29日 22:06
  • 91

[前端] nodejs中全局变量&global对象

作为一个javascript初学者,都在不知不觉的使用全局变量,用了许久之后,前辈告诉我们不要用去全局变量,然后想尽办法不使用全局变量,使用模块化的思路去解决问题。 但是到了nodejs中来,模...
  • u010081689
  • u010081689
  • 2015年04月17日 17:05
  • 1721

JavaScript中声明全局变量的三种方式(包括显示和隐式)

声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。 var test = 5;//全局变量 f...
  • u012110719
  • u012110719
  • 2015年11月04日 22:02
  • 3485
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:正确声明全局变量
举报原因:
原因补充:

(最多只允许输入30个字)