-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();
}
Может быть, я что-то неправильно понял. и поэтому я думаю, что должен быть способ удалить эту неиспользуемую функцию. Если да, то объясните мне, почему, когда я НЕ использую указатели с виртуальными функциями, невозможно «избавиться» от полиморфных накладных расходов.
К вашему сведению: этот код предназначен главным образом для учебных целей.
Подробнее здесь: https://stackoverflow.com/questions/174 ... -functions
Мобильная версия