c++ - 如何使用 G++ 抑制纯虚拟类的 C++ vtable 生成?

标签 c++ gcc g++ virtual-functions vtable

可以在 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/

相关文章:

c++ - 为什么 argc 的输出不同?

g++ - 当涉及到 lambda 函数的指针时,g++ 4.5.3 是否损坏?

c++ - 将捕获的 lambda 作为函数指针传递

gcc - 使用 AVX/AVX2 内在函数进行对齐和未对齐的内存访问

c++ - g++ 4.4 中 std::atomic<const memberfunctionpointer*>::store() 的 undefined reference

c++ - GCC 依赖跟踪 : Is -M better than -MM?

c - 如何在没有得到编译警告的情况下表达 wait(NULL)?

c++ - 概念难度 c++ Deck of Cards

c++ - 在opengl程序中显示图形时遇到问题

c++ - 从 void 函数的 return 语句调用函数