archim
驱动牛犊
驱动牛犊
  • 注册日期2001-08-18
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1202回复:6

关于全局变量的定义!!

楼主#
更多 发布于:2002-10-11 10:30
在一个工程中定义全局变量,现在有以下两种方法:

1.
将全局变量定义在.c(.cpp)文件中,在.h文件中用extern声明该变量,在需要使用该全局变量的时候只需要include相应的头文件就可以了。

2.
将全局变量定义在.h文件中,需要使用的时候只需要include相应的头文件就可以了。

我认为使用第一种方法比较好,而我的同事则觉得第二种方法好一点。究竟哪一种好呢??

对于第二种方法现在发现如下问题:
如果在2个以上的.cpp文件中引用了同一个变量,那么在连接的时候就出现\"Symbol redifinition\"的错误。
如果源文件的扩展名都使用.c,则不会出现以上问题。而且对于VC编译器可以保证变量所用的引用都指向相同的地址,但是对于其它的编译器来说,会不会出现不同的引用指向不同的地址的情况呢??

欢迎各位大虾提供意见。
archim
li_er
驱动牛犊
驱动牛犊
  • 注册日期2002-03-16
  • 最后登录2005-06-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-11 10:42
小弟也认为使用第一种方法比较好
小宝
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-11 10:43
为什么不:
将全局变量定义在.c(.cpp)文件中,在另外需要使用的c,cpp中用extern申明呢?
以C++推荐语法,不应该在h文件中申明变量,只能是结构定义或函数原型申明或宏定义。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-11 10:43
我一般这样定义:

在一个cpp中定义全局变量,
在需要使用这个变量的cpp文件中声明是extern

这样不需要include :D
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-11 10:46
虎财竟然比我快,pfpf
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
lxcomcn
驱动老牛
驱动老牛
  • 注册日期2002-07-31
  • 最后登录2010-12-10
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望43点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-10-11 11:02
第一种方法好!
[img]http://www.nbuser.com/vb/avatar.php?userid=10792&dateline=1046232652 [/img] 我要作诗!!!
bbear
驱动小牛
驱动小牛
  • 注册日期2002-08-20
  • 最后登录2009-04-16
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-10-11 12:49
我的做法陪 1 差不多.

Global.H : define all globale variable
   int G1;
Ref.H    : with extern.
   extern int G1;

在 main 中(或某一 .c 中) include global.h
其他都 INCLUDE REF.H

游客

返回顶部