((My_LengthilyNamedClass *)this)->someMember
...我厌倦了这些出现在我的代码库中,甚至在同一个函数中也很多次。
在C中处理此类事情的适当方法是什么?我知道将它复制到一个名称较短的正确类型的堆栈/自动变量是一种避免强制转换的方法,但我认为这会导致额外的,可能不必要的堆栈分配。
可以在个别函数中使用define
,以使其更容易吗? define
是要走的路吗?由于这是一个实时处理框架的代码,并且这些东西出现在任何地方,我理想地喜欢坚持任何最高效的。
答案 0 :(得分:4)
编译器非常擅长优化。我认为你没问题:
My_LengthilyNamedClass *const ptr = this;
如果你真的是偏执狂,你可以使用宏:
#define THIS ((My_LengthilyNamedClass *)this)
THIS->someMember = 5;
#undef THIS
答案 1 :(得分:2)
如果你有很多这些演员阵容,你可以改变:
((My_LengthilyNamedClass *)this)->someMember
到
My_LengthilyNamedClass *that = (My_LengthilyNamedClass *) this;
/ * ... * /
that->someMember