【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 3164|回复: 6

[C++]问一个很弱智的问题???

[复制链接]
发表于 2006-6-15 09:46:28 | 显示全部楼层 |阅读模式

在一个有着多个文件的工程中,怎么使用“全局变量”???

昨天碰到一个问题,我要在我的工程中使用一个“全局变量”,现在我的工程里有很多文件(比如:d3d9.h d3d9.cpp d3dsound.h d3dsound.cpp .......),在这些文件中都将用到这个变量。

所以我就新建了2个文件:Global.h 和 Global.cpp

其中头文件里用来声明“全局变量”和“全局函数”,主文件里用来实现“全局函数”

可是,我遇到了很多问题:

1 编译通过,在链接的时候出现:“该符号(就是我定义的那个全局变量)已经在 " **.cpp " 里被定义”

2 查看MSDN,将全局变量的声明部分前面加上关键字 static ,编译,链接都没有问题,可是程序运行时“全局变量”的值始终都是“0”

3 再看MSDN,将前面的关键字由 static 改成 extern ,编译通过,链接时错误:“"全局变量",无法解析的符号”

我已经疯了~~~~~~~~~~~~~~~~~~

[em03][em03][em03]
 楼主| 发表于 2006-6-17 12:49:21 | 显示全部楼层

问题解决了。

在.h文件中声明了 extern int i;之后,要在相应的.cpp文件中使用 int i=0;将其初始化。

所有问题都不存在了

发表于 2006-6-17 13:47:54 | 显示全部楼层

这样也可以啊,呵呵.

发表于 2006-6-15 14:02:39 | 显示全部楼层
确实是extern,不过前面已经初始化了,这里就不给初始值了。
 楼主| 发表于 2006-6-22 10:44:00 | 显示全部楼层

没办法,C++编译器和C编译器还是有区别的。

特别是涉及到变量的文件域的时候

发表于 2006-6-22 14:12:32 | 显示全部楼层
我在gameres论坛上看到你说是在MSDN里找到资料的,真的假的?我怎么没见过呢?
 楼主| 发表于 2006-6-23 11:31:26 | 显示全部楼层

我昨天在GMAERES上已经回答了这个问题了

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-6-23 05:26

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表