社区
C++ Builder
帖子详情
如何定义C++builder的全局变量
mxp
2000-06-23 10:30:00
不要告诉我在.h的Public中定义!!!
我要的是不打开任何.h就能使用的真正全局变量,属于工程,不属于类,请详细说一下有几种可定义的位置!
...全文
588
11
打赏
收藏
如何定义C++builder的全局变量
不要告诉我在.h的Public中定义!!! 我要的是不打开任何.h就能使用的真正全局变量,属于工程,不属于类,请详细说一下有几种可定义的位置!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
实现计算器
用
c++builder
实现简单的计算器代码及工程
c++builder
回调函数例子
在动态库中调用主程序中的回调函数 用Builder写的
C++builder
创建bpl库,并调用
在
C++builder
中创建BPL库,封装类和共享变量,并给出调用方法
C++builder
实现动态添加按钮以及随意拖动实现
本程序是在
C++builder
中实现动态添加Button组件,其中Button属性可更改成其他任何的其他组件。代码我本人编写,浅显易懂,在此分享一下。
c++ builder多窗口互相通信代码
c++ builder多窗口互相通信代码, 给予参考。
C++ Builder
13,870
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章