Obj(object). //宏,将变量切换为对象,使用 . 进行后续访问
ObjRef(pObject)-> //宏,将指针变量切换为对象引用,使用 -> 进行后续访问
_this //当前对象指针,20170722更新后不建议直接使用,建议使用THIS(type)
THIS(type) //宏,自动生成一个类型为type的this指针,注意避免该宏暴露在大作用域上
ThisRelease() //多线程下使用,用于清空当前线程下的this指针Cache
-
如果需要多线程支持,需要在GCC编译参数中增加-D THIS_PTHREAD_SUPPORT 选项(不能在文件中增加),多线程支持模式下,对象访问效率会降低很多;
-
Obj和ObjRef都不能嵌套使用,例如:
Obj(test1).fun3(Obj(test2).fun4(100));
这样会导致this指针混乱,请保证每次对象操作的对象单一性; -
在对象成员函数中使用_this指针时,应该尽量在开始处获取_this指针然后保存下来,不要反复去获取_this指针。一方面反复获取_this指针会导致效率低下,另一方面,_this指针有可能会被其他操作修改; ( 20170722 更新增加宏 THIS(type) 来自动获取this指针,不建议再使用_this指针);
-
ThisRelease函数是不强制使用的,但是建议使用。多线程支持下,模块会为每个使用过对象的线程都创建一个不多于24字节的this Cache,this Cache的大小直接影响了对象访问效率,当进程频繁创建线程的时候,this Cache的累积会不容忽视,因此建议在线程结束前调用ThisRelease;
-
其他以后继续慢慢补充。
详细用法参考PeopleObject.c 和 PeopleObjectTest.c