是否可以通过下面的简单代码使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"
字符串的字节。
答案 0 :(得分:0)
它可能无法删除此功能,因为class D
的虚拟表引用了此功能。 class D
的虚拟表由其构造函数和析构函数引用。