为了消除未使用的(普通)函数,我可以使用:-ffunction-sections、-fdata-section 和 --gc-sections。它有效。
我知道使用多态性,函数是“后期绑定”,所以我想没有办法决定在链接过程中可以删除哪个函数。
但是我使用纯虚函数来强制继承的类实现某些功能。然后在代码中我使用对象(不是对象的指针/引用,所以我没有使用多态性)。
伪代码:
class BASE {
...
virtual void do_sth() = 0;
virtual void do_sth_else() = 0;
...
};
class C1 : BASE {
...
void do_sth() { //some code }
void do_sth_else() { //some code }
}
main()
{
//the do_sth_else function is never used in main
C1 obj1;
obj.do_sth();
}
在链接过程中是否有一些方法可以消除这个未使用的函数(do_sth_else)?也许我误解了什么。因此,我认为应该有一种方法可以删除这个未使用的功能。如果是这样,请解释我为什么,当我不使用带有虚函数的指针时,没有办法“摆脱”多态开销。:)
仅供参考:此代码主要用于学习目的。