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

怎样定义全局变量、枚举类比较合理?

楼主TryToday(超口术生命体)2003-04-01 11:50:37 在 C++ Builder / 基础类 提问

 
          我想在许多窗体中都使用相同的全局枚举变量,现在是在每个窗体.cpp文件开头加入枚举类型说明和枚举变量说明,试着在主程序.h文件加入,总提示出错。  
   
          大家说说怎样定义全局变量、全局枚举类比较合理? 问题点数:20、回复次数:13Top

1 楼TopCat(令狐虫)回复于 2003-04-01 11:54:20 得分 10

你一定是犯了“多重定义”的毛病。  
   
  一般做法是这样:在cpp里定义变量,而在.h里只声明它(使用extern关键字),这样就没有问题了。  
   
  可以参考BCB自动生成的文件中,Form   的定义。Top

2 楼myredsun(迷茫)回复于 2003-04-01 12:02:24 得分 10

同意楼上的,一般如果是全局性的定义,我会增加一个globe.cpp和globe.h文件,在CPP文件里定义,而在H文件里声明,再在要用的地方包含globe.h文件即可。Top

3 楼sinman(普善客)回复于 2003-04-01 12:09:15 得分 0

而且要扩展externTop

4 楼oishi(农夫XP)回复于 2003-04-01 12:20:36 得分 0

同意楼上!Top

5 楼lingyunfeipu(凌云)回复于 2003-04-01 13:36:52 得分 0

在   public.cpp   中  
  int   x;  
  在public.h中  
  extern   int   x;  
  在from   中  
  #include   "public.h"  
  就可以直接用x变量了  
  Top

6 楼leonpard(猪哥哥)回复于 2003-04-01 13:47:59 得分 0

我写了这么多年程序,几乎不用extern这个关键字,最好不要使用全局变量这种东西,破坏了程序的结构,你可以声明一个公用的类实例,所有的变量都放在这个类里面,集中管理。功能上是一样的,但是优雅了很多。Top

7 楼TryToday(超口术生命体)回复于 2003-04-01 16:09:10 得分 0

全局类实例?具体怎么用呢?Top

8 楼TryToday(超口术生命体)回复于 2003-04-01 16:09:36 得分 0

我在主窗口定义了枚举类型:  
  enum   nowFormStatus   {_IN=0,   _OUT=1,   _TO=2,   _OTHER=3};  
   
          在其它窗口使用这个枚举类型的时候,都要在.cpp文件开头重新定义,加   extern   会提示出错。(和变量不一样)  
          这种方法太不爽了,如果要改动就得改所有窗体。谁有好主意来方便其它窗口使用这个枚举类型?Top

9 楼anetfish(鱼翔浅底)回复于 2003-04-06 20:59:34 得分 0

gz  
  Top

10 楼TopCat(令狐虫)回复于 2003-04-11 13:22:21 得分 0

enum只是一个类型,你可以将它定义在头文件里,在需要用到的地方包含一下,我想不出会有什么样的问题?  
   
  我做了一个小Demo,给你看看吧:  
  //File1.h  
  #ifndef   FILE1_H  
  #define   FILE1_H  
  enum   TestEnum   {RED,   GREEN,   BLUE};  
  #endif  
   
  //Form1  
  #include   "File1.h"  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
          TestEnum   e   =   RED;  
  }  
  //---------------------------------------------------------------------------  
   
  //Form2  
  #include   "File1.h"  
  void   __fastcall   TForm2::Button1Click(TObject   *Sender)  
  {  
          TestEnum   e   =   GREEN;  
  }  
  //---------------------------------------------------------------------------  
   
   
  编译链接都不会出错。  
  上面说的extern,是针对变量的。Top

11 楼TryToday(超口术生命体)回复于 2003-04-14 12:11:04 得分 0

try...Top

12 楼TryToday(超口术生命体)回复于 2003-04-16 18:50:10 得分 0

那样还是相当于在每个窗口都定义一次啊。Top

13 楼TopCat(令狐虫)回复于 2003-04-16 19:52:23 得分 0

类型哪里来的“定义”??  
   
  除了这种方法,你还有什么更好的方法?Top

相关问题

  • 全局变量的定义
  • 全局变量的定义
  • 怎样定义一个全局变量,在Frm类与View类都可以用
  • 关于全局变量的定义?急!
  • 怎样才能定义全局变量?
  • 怎么定义全局变量啊?
  • 定义全局变量问题
  • 全局变量在哪里定义?
  • 如何定义一个全局变量????
  • Java中怎样定义全局变量???

关键词

  • 文件
  • cpp
  • 变量
  • 定义
  • 全局
  • 窗体
  • testenum
  • 类
  • 类型
  • globe

得分解答快速导航

  • 帖主:TryToday
  • TopCat
  • myredsun

相关链接

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

广告也精彩

反馈

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