【问题标题】:What is the meaning of "extern PACKAGE TMyForm * MyForm"“extern PACKAGE TMyForm * MyForm”是什么意思
【发布时间】:2013-05-02 20:28:40
【问题描述】:

在 C++Builder XE2 中,IDE 将把这行代码放在与 TMyForm 关联的头文件中,紧跟在 TMyForm 类之后。我确定这与 TMyForm 的所有属性都在 MyForm.dfm 中定义并且需要以某种方式链接到可执行文件的事实有关,但是我在文档或在线中找不到对它的任何引用。谷歌搜索“extern PACKAGE”只会产生大量包含该短语的代码示例。

奇怪的是,将其注释掉似乎没有任何效果。我什至删除了 .res 文件并进行了重建,没有它,表单也可以正常工作。这似乎否定了我上面的假设。

【问题讨论】:

  • 看来 PACKAGE 是一个宏。检查它的定义。
  • @Mahesh 我无法通过右键单击并选择“查找声明”找到它的定义,不知道在哪里可以查找。
  • PACKAGE 在 sysmac.h 中定义。

标签: c++ c++builder


【解决方案1】:

extern TMyForm *MyForm 用于声明一个全局变量(它实际上驻留在您的 Form 的 .cpp 文件中)。如果该变量配置为在应用启动时自动加载,或者您在自己的代码中手动分配,则该变量在运行时指向您的 TForm 对象。

PACKAGE 是一个扩展为 __declspec(package) 的宏,如果您选择在包中使用它,它会将类标记为可在包中编译。

【讨论】:

  • 谢谢 Remy,我经常删除全局声明,因为我更喜欢在我使用它的地方声明它,所以我想我也可以删除 extern 声明。
猜你喜欢
  • 2011-02-14
  • 2017-01-27
  • 1970-01-01
  • 2013-05-07
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多