CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

小问题:公共变量的使用

楼主cool222(坚持到底)2004-10-04 13:19:18 在 C++ Builder / 基础类 提问

我定义了几个AnsiString   变量在strmsg.h文件中,以便作为公共变量供其它文件使用,如下:  
   
  AnsiString   Str_Application;   //程序标题  
   
  在工程中,我添加了这个strmsg.h,工程文件中增加了一行USE**之类的语句。我又在工程文件中自定义了一个LoadRes函数,从资源DLL中读取赋给Str_Application值,没用extern就编译通过了。  
   
  在Form文件中,我在文件开头加上了extern   AnsiString   Str_Application,在Create事件中赋值:  
  Caption=Str_Application;  
   
  编译通过,运行后窗体标题为空,跟踪后发现Str_Application的值已经读取正常,并非为空。增加了一个MessageBox显示它的值也是空,中断查看却有值,真不知是什么回事,不会是BCB的Bug吧?  
  问题点数:20、回复次数:5Top

1 楼ThinkX(秋天的树)回复于 2004-10-04 14:06:39 得分 4

变量分为声明和定义。  
  声明是告诉编译器我要使用一个变量;  
  定义是告诉编译器要为变量分配存储空间。  
   
  你在头文件中写入:  
  AnsiString   Str_Application;  
  其实不是声明变量,而是定义变量,这就意味着包含这个头文件的地方都会为变量分配空间,所以会有很多值。  
  正确的方法是在头文件中使用extern进行声明,而在cpp中定义一次。  
   
  还有一个方法就是在头文件中使用static   定义。Top

2 楼blow_jj(阿俊)回复于 2004-10-04 14:30:05 得分 2

"我添加了这个strmsg.h"--在头文件中是声明,只分配了空间  
  呵呵Top

3 楼Maconel(Maconel)回复于 2004-10-04 17:21:49 得分 10

使用全局变量应该这样  
  添加2个文件:global.h和global.cpp  
   
  在global.cpp中这样写:  
  #include   "global.h"  
  //--------------------  
  int                 a;  
  bool               b;  
  long               c;  
  AnsiString   d;  
   
  在global.cpp中这样写:  
  extern   int                 a;  
  extern   bool               b;  
  extern   long               c;  
  extern   AnsiString   d;  
   
  在需要使用变量的地方,包含global.h就行了,还要注意自己给global.h文件加些预编译,可以直接新建unit,会自动生成的。  
   
  这里有一个使用全局变量的例子:  
  http://zydlm.wxhc.com.cn/down_view.asp?id=132Top

4 楼Maconel(Maconel)回复于 2004-10-04 17:23:26 得分 0

抱歉,出了点笔误:  
   
  在global.cpp中这样写:  
  extern   int                 a;  
  extern   bool               b;  
  extern   long               c;  
  extern   AnsiString   d;  
   
  应该是:  
  在global.h中这样写:  
  extern   int                 a;  
  extern   bool               b;  
  extern   long               c;  
  extern   AnsiString   d;Top

5 楼hy1080(老神经病)回复于 2004-10-04 21:43:02 得分 4

变量定义在.c中,在.h中externTop

相关问题

  • 如何使用DLL中的公共变量
  • 公共模块级变量connection的使用!在线讨论!
  • 在PHP如何设置和使用网页间的公共变量?
  • [请教]为什么有了公共变量还要使用属性?
  • 关于公共变量
  • 父窗体,子窗体连接数据库使用公共变量的问题, 大哥大姐,小弟分不多了,全给了,谢谢赐教
  • public 变量使用
  • Cookie变量使用?
  • java 变量的变量使用
  • 如何定义一个公共变量,无论在哪个WebForm窗体都能使用其值!!!

关键词

  • 文件
  • 编译
  • cpp
  • application
  • 变量
  • ansistring
  • extern
  • 使用
  • global
  • 定义

得分解答快速导航

  • 帖主:cool222
  • ThinkX
  • blow_jj
  • Maconel
  • hy1080

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo