2009-11-24 58 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中的任何編譯器標誌。

相關問題