是否可以从下面的简单代码中使MS链接器删除D::Unused
函数?
class B {
virtual const char* Unused() = 0;
};
class D : public B {
const char* Unused() override;
};
const char* D::Unused() { return "this string is unused"; }
int main() {
D* d = new D;
delete d;
return 0;
}
我正在尝试使用 vs2017 +/OPT:REF /OPT:ICF /LTCG
来实现这一点,但生成的二进制文件仍然包含"this string is unused"
字符串的字节。
它可能无法删除此函数,因为此函数由class D
的虚拟表引用。虚拟表class D
由其构造函数和析构函数引用。