Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5771941
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: C/C++

2006-10-19 13:41:19

尽管你已经使用了

#ifndef _A
#define _A


class A
{
public:
  void Print(char* text);
};

int i;

#endif

但还是出现这样的错误!!!!
Linking...
print1.obj : error LNK2005: "int i" (?i@@3HA) already defined in main.obj
print1.obj : error LNK2005: "int i" (?i@@3HA) already defined in main.obj
Debug/abc.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

主要是你没有搞清楚一个问题, redeclare & redefine
#ifndef #define #endif 只能防止 redeclare,
若多次引用 此头文件, int i 不是被定义了多次吗, 肯定出错啊!

所以我们在被多次引用的头文件里面使用全局变量一定要加 extern

extern int i;

不要再搞错了!
阅读(1461) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

enjoy_it2009-06-02 19:01:33

一般是在.c中定义变量,若该变量为整个程序的全局变量则在.h中用 extern声明它 否则,一般直接在.c中加static修饰它为 文件内部变量

enjoy_it2009-06-02 19:01:33

一般是在.c中定义变量,若该变量为整个程序的全局变量则在.h中用 extern声明它 否则,一般直接在.c中加static修饰它为 文件内部变量