#define HX_DEFINE_DYNAMIC_FUNC0(class,func,ret)
Dynamic __##class##func(hx::Object *inObj)
{
ret reinterpret_cast<class *>(inObj)->func(); return Dynamic();
};
Dynamic class::func##_dyn()
{
return hx::CreateMemberFunction0(this,__##class##func);
}
上面的CreateMemberFunction0是一个保存函数信息的结构体。函数__##class##func可能在某个时刻被执行,其结果被传递给相关代码。然而,我对此感到困惑,因为函数的执行似乎返回了一个名为动态的函数的执行?Dynamic也是hxcpp/haxe的一个类(对于那些不熟悉的人)。
- Dynamic()是一个函数的执行,还是一个对象堆栈上的无参数构造?
- ret关键字是什么?
- 如果1是正确的,函数的执行结果是如何传递的?
Dynamic()是函数的执行还是对象堆栈上的无参数构造?
必须是后者,因为所定义的函数的返回类型也是Dynamic
。
ret关键字是什么?
它不是关键字,它是传递给宏的参数。通过Google搜索,可以找到这个宏的两个用例:
HX_DEFINE_DYNAMIC_FUNC0(List_obj,first,return)
HX_DEFINE_DYNAMIC_FUNC0(List_obj,clear,(void))
在第一种情况下,函数reinterpret_cast
是(inObj)->func()
函数调用List_obj *
的结果。要使代码工作,Dynamic
必须有一个隐式转换构造函数,该构造函数接受一个List_obj *
。
在第二种情况下,reinterpret_cast
的结果被丢弃,并返回默认构造的Dynamic()
对象。