我的环境:
操作系统 - Windows7 Pro(32位)
IDE - RadStudio XE2 Update4
我想知道Synchronize()函数。
在线程程序中使用Synchronize()函数。关于在C +构建器中使用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);
没有"&"在函数名之前;
同样在here中的delphi代码中, 没有"&"在函数名之前;
// Synchronize(UpdateCaption);
那么,这是在C ++ builder
中使用Synchronize()的正确方法// Synchronize(UpdateCaption);
或
// Synchronize(&UpdateCaption);
我在实际代码中尝试了两种方法,但在工作方式上似乎相同。 UpdateCaption和& UpdateCaption都返回函数地址吗?
答案 0 :(得分:4)
那么,这是在C ++ builder
中使用Synchronize()的正确方法//同步(UpdateCaption);
或
//同步(& UpdateCaption);
它们都有效,但&
是首选。
UpdateCaption和& UpdateCaption都返回函数地址吗?
是。如果在没有为参数列表指定括号的情况下引用函数/方法,则假定函数/方法的地址。 &
只是让它更明确。