可以在 MSVC 中使用 __declspec(novtable)
属性来抑制 C++ vtable 生成。但是,似乎 there is no equivalent attribute用于 GNU C++ 编译器。事实上,为纯虚拟类保留 vtables 会不必要地链接 __cxa_abort()
和许多其他链接,我想避免这种情况发生,因为我正在为嵌入式系统编程。那么,我该怎么办?
struct ISomeInterface
{
virtual void Func() = 0;
};
class CSomeClass : public ISomeInterface
{
virtual void Func();
}
void CSomeClass::Func()
{
//...
}
最佳答案
有一些东西可以达到类似的结果:#pragma interface
。
但是,#pragma implementation
可以覆盖它。
http://www.emerson.emory.edu/services/gcc/html/CPP_Interface.html
关于c++ - 如何使用 G++ 抑制纯虚拟类的 C++ vtable 生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8371470/