2009-11-24 40 views
11

是否有一个相当于Visual Studio的__declspec(novtable)参数的g ++?是否有一个g ++等效于Visual Studio的__declspec(novtable)?

基本上,在纯虚拟基类中,__declspec(novtable)参数可用于分别禁止在基类中创建vtable以及在contstructor/destructor中创建vtable初始化/取消初始化代码。例如,

class __declspec(novtable) PureVirtualBaseClass 
{ 
    public: 
     PureVirtualBaseClass(){} 
     virtual ~PureVirtualBaseClass() = 0; 
}; 

有关更多信息,请参见Paul DiLascia's article。另请参阅我的相关question

+0

只是好奇:在我看来,放弃PureVirtualBaseClass的虚拟表是一种微型优化,通常是一个非常小的。想要这样做的原因是什么? – Managu 2009-11-24 05:19:04

+0

阅读DiLascia的文章,他涵盖了想要做得更好的原因。 – paxos1977 2009-11-24 14:18:59

+0

另外,今天在MSDN上发现了这个http://msdn.microsoft.com/en-us/library/k13k85ky.aspx,他们建议使用__declspec(novtable)可以显着减少程序大小。 – paxos1977 2009-11-26 02:35:35

回答

7

我不认为有一个 - 如果有的话,它会列在GCC手册的type attributes page下。 GCC使用类型属性来为类型添加额外的注释(比如对齐和填充),但是没有类型属性相当于在那里列出的__declspc(novtable)

我也没有看到有关此优化的man page中的任何编译器标志。

相关问题