bcb中,如果定义一个面向对象的全局变量.而不用extern定义

gigilee 2004-12-14 09:12:29
bcb中,如果定义一个面向对象的全局变量.而不用extern定义
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Waiting4you 2005-07-31
  • 打赏
  • 举报
回复
还有一种方法,在h文件里把int ii;定义改成static int ii;
XBox360 2005-07-29
  • 打赏
  • 举报
回复
像上面说的:如果其他文件要访问,就需要extern。
Maconel 2005-07-29
  • 打赏
  • 举报
回复
对于上边所说的警告信息,是因为,你在h文件里定义了一个全局变量,那么其他单元包含它时,等于在每个单元都定义了一个int ii;变量,他们虽然名字一样,但是实际是不同的变量。因为include一个h文件,就等于把那个h文件的代码拷到include的地方。

所以一般定义全局变量的方法,是在cpp中定义int ii;,然后在h文件中extern int ii;。这样大家包含该h文件时,就等于都有了一句extern ...。extern是引用一个外部的变量,那么大家就都引用了同一个变量int ii;,这样用起来才是只有一个ii,而不是各有一个ii。
Maconel 2005-07-29
  • 打赏
  • 举报
回复
在函数外部定义的变量,就是全局变量。
但是该变量只有在能看到他的地方,也就是本文件内,变量声明以后,才可以使用他。
如果其他文件要访问,就需要extern。
Swosna 2005-07-29
  • 打赏
  • 举报
回复
extern PACKAGE TForm1 *Form1;
我在这里定义了一个int ii;编译的时候它会提示
[Linker Warning] Public symbol '_ii' defined in both module F:\ANAN\WEIXIU\LOGON.OBJ and F:\ANAN\WEIXIU\MAIN.OBJ
jishiping 2004-12-14
  • 打赏
  • 举报
回复
比如,你运行BCB后,在Unit1.cpp中,一开始的 TForm1 *Form1; 这就是定义了一个全局变量Form1。而在 Uni1.h 的最后,你看到的 extern PACKAGE TForm1 *Form1; 这就是描述(说明)全局变量Form1,好让其它的cpp在包含 Unit1.h 之后,可以访问全局变量 Form1

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧