社区
C++ Builder
帖子详情
如何定义C++builder的全局变量
mxp
2000-06-23 10:30:00
不要告诉我在.h的Public中定义!!!
我要的是不打开任何.h就能使用的真正全局变量,属于工程,不属于类,请详细说一下有几种可定义的位置!
...全文
549
11
打赏
收藏
如何定义C++builder的全局变量
不要告诉我在.h的Public中定义!!! 我要的是不打开任何.h就能使用的真正全局变量,属于工程,不属于类,请详细说一下有几种可定义的位置!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
april_d
2001-10-18
打赏
举报
回复
gz
mxp
2000-06-23
打赏
举报
回复
不是我要用,而是我经常看见一些网友说全局变量不安全,又什么占用内存等等,又是工程加载就使用啦,等等,所以要用类的共享变量,我怎么从没在任何资料上看见有属于工程不用打开头文件的变量?!!因此我想知道所说的不安全的全局变量是什么?
duhorse
2000-06-23
打赏
举报
回复
可以试试在project->view source中加入,行吗?
halfdream
2000-06-23
打赏
举报
回复
在一个工程中专门用一个UNIT存放全局变量吧。
呵呵,这样还是要INCLUDE 头文件的。
变量定义在其中的CPP文件中。再在头文件中声明一下。
如:
//----------------CPP file------------
int a;
float b;
AnsiString c; //这几个是定义
//----------------------------------------
//----------------H file------------------
extern int a;
extern float b;
extern AnsiString c; //这几个是对应的声明, 要分清。
//---------------------------------
另外在头文件有个地方稍稍注意一下:
#ifndef Unit2H
#define Unit2H
//(在这个地方放你的声明代码, 这样可以避免因多重#include 造成的重复声明)
#endif
radish
2000-06-23
打赏
举报
回复
你为什么要用全局变量?
halfdream
2000-06-23
打赏
举报
回复
你说‘如果是指针分配内存后,没有释放,也不随着应用程序的关闭而自动释放’
我差不多也是这样认为。不过我还是有些怀疑:
WINDOWS 为每个进程一个进程堆,即所谓的全局堆, 用new 这样动态分配的内存都
是从这个全局堆中分配, 在进程结束的时候, 这个进程堆应该是完全释放吧,这样就
算里面的指针没有完全释放内存,好象也没有关系吧?
另外, VCL 对象有一个要求,是必须都用new动态分配,
这一点极象JAVA的思想。JAVA 可以不用手工释放动态分配的内存。
我想VCL 也提供了一种机制自动释放分配的内存。
halfdream
2000-06-23
打赏
举报
回复
在同一个文件中定义的全局变量可以直接用。
在另一个文件中定义的,必须先声明再用。如:extern int a; a=8;
这是因为编译器是将各文件先独立编译成OBJ文件后再链接的。如果不声明,
编译器是绝不知道有这个变量定义在其它文件。
mxp
2000-06-23
打赏
举报
回复
另外,我想所说的占内存可能是不随着任何窗体的释放而消失,如果是指针分配内存后,没有释放,也不随着应用程序的关闭而自动释放。
mxp
2000-06-23
打赏
举报
回复
对,我就是想知道在任何窗体中不需要声明就可以使用的变量,在工程(不知道何处)中定义,各个窗体用不着对它作处理,拿来就用,比如在 有个全局变量 a,在窗体Form1中a=8;(就是直接写a=8;别的什么都不用做,包括include),只要不改变a在窗体 Form2中 a还是等于 8 。有没有?
halfdream
2000-06-23
打赏
举报
回复
需要的时候还是用一下吧。 变量不占内存占什么? :)
所谓的不安全,全局变量主要问题就是因为在哪个函数中都可以访问它。
不小心会造成一些问题。
所谓#include 其实就是相当于把声明的那段代码,粘贴过来。同手工声明一点区别都没有。
呵呵。什么叫属于工程的变量?
是说的放在工程的主cpp文件中的变量吗?
其实,很多只是常识就可以推断,别想复杂了。
你可以写程序试试, 定义各种变量, 包括用NEW 来分配空间。
然后显示它们的地址值,看看内存分配的问题,让事实来说话。
mxp
2000-06-23
打赏
举报
回复
>可以试试在project->view source中加入,行吗?
早就试过了,不好用!
C++Builder
函数库
文件: ActnList CreateAction 函数 创建一个指定类型的Action,显示在action list editor中。 ... 文件: Classes Bounds 函数 输入上下高宽返回一个矩形...SetClipboard 函数 用一个新TClipboard替换全局TClipboard。
C++Builder
(BCB)编程规范
千万不要
定义
全局变量
和全局函数,至于会发什么问题啦,只有碰到了几十万的代码,五六个项目集合,一两百个单元所可能发生的问题。 那该怎么办了? 简单把它归到所在单元的类声明中去。函数的实现代码行不要超过200...
CBuilder XE与SQLite快速开发app
因为C++ Builder XE10资料一直较少,所以作为C++ Builder业余fans,有必要为这冷门提供一些技术支持,与小伙伴们一起成长! 本视频系列,主要是讲解C++ Builder XE10与sqlite来快速开发手机安卓app,让学友们能够...
用
全局变量
实现程序暂停/继续控制
如附件程序,用两重循环就不能实现,单重循环就没问题,但是又需要用两重循环,请高手指点!!!
c++多线程的创建挂起执行与销毁
4. 新增一个静态的
全局变量
,用于记录所有线程的状态:static int GlobalVar=10000; 5. 声明并编写线程函数,注意只能有一个参数,且函数的返回值类型也是固定的;函数名可以自
定义
; DWORD WINAPI ThreadFun(LPVOID...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章