c++builder - 有或没有 & 用于在 C++ 构建器中调用 Synchronize()

标签 c++builder

我的环境:

操作系统 - Windows7 Pro(32 位)

IDE - RadStudio XE2 Update4

我想知道 Synchronize() 函数。

线程程序中使用了Synchronize()函数。关于在C+ builder中使用Synchronize(),示例如下(见here)

//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(&UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall TMyThreadClass::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }

令我感到困惑的是,在某些旧版本的 C++ 构建器(例如 bcb6)中, 使用了 Synchronize()

// Synchronize(UpdateCaption);

函数名前没有“&”;

同样在 delphi 代码中,如 here , 函数名前没有“&”;

// Synchronize(UpdateCaption);  

那么,这是在 C++ 构建器中使用 Synchronize() 的正确方法

// Synchronize(UpdateCaption);  

// Synchronize(&UpdateCaption);  

我在实际代码中都尝试过,但工作方式似乎相同。 UpdateCaption 和 &UpdateCaption 是否都返回函数地址?

最佳答案

So, which is the correct way to use Synchronize() in C++ builder

// Synchronize(UpdateCaption);

or

// Synchronize(&UpdateCaption);

它们都有效,但首选 &

Do both UpdateCaption and &UpdateCaption return address of functions?

是的。如果在没有为参数列表指定括号的情况下引用函数/方法,则假定为函数/方法的地址。 & 只是让它更明确。

关于c++builder - 有或没有 & 用于在 C++ 构建器中调用 Synchronize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24377915/

相关文章:

c++ - 为什么 C++ Builder 找不到我的 header ?

c++ - TForm 隐藏在主窗口后面

c++ - 包括写在不同文件夹中的函数

c++ - 使用 C++ Builder 实现 Active Directory

c++ - XE5 Ansi/Unicode 字符串链接器错误( Unresolved external 问题)

c++ - vcl.h : No such file or directory

delphi - 让 C++Builder/Delphi 在启动时创建 TForms,还是手动创建?

C++ VCL 询问 .xlsb Excel 数据库

c++ - 无法获取ms _tzSet()示例进行编译

c++ - 如何让 vector 数据指向数组