【发布时间】:2013-12-11 13:42:22
【问题描述】:
我正在一个嵌入式平台上工作,该平台不能很好地处理动态代码(根本没有推测/OOO 执行)。 在这个平台上,我经常在同一个对象上调用虚拟成员函数,但是编译器无法优化 vtable-lookup,因为它似乎没有识别出只有第一次调用才需要查找。
因此我想知道:是否有一种手动方法可以对 C++ 类的虚拟成员函数进行去虚拟化以获得直接指向解析地址的函数指针? 我查看了 C++ 函数指针,但由于它们似乎需要指定类型,我想这不会成功。
提前谢谢你
【问题讨论】:
-
感谢您指出这可能是重复的,但是另一个线程中的问题没有得到回答:/
-
当您说“它似乎无法识别仅在第一次调用时才需要查找”时,您的意思是,在单个函数中,保证基类指针始终指向同一个例子? (例如 VBase *b = new Subclass(); b->virtualfunc();...)。