2009-11-24 21 views
11

Visual Studioの__declspec(novtable)引数に相当するg ++がありますか?Visual Studioの__declspec(novtable)に相当するg ++がありますか?

基本的には、純粋な仮想基底クラスでは、基本クラスのvtableの作成を抑制するために、またcontstructor/destructorのvtable初期化/初期化解除コードをそれぞれ使用することができます。例:

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

詳細については、Paul DiLascia's articleを参照してください。私の関連のquestionも見てください。

+0

好奇心が強い:PureVirtualBaseClassのvtableを破棄することは、マイクロ最適化であり、一般的には非常に小さいものです。これをしたい理由は何ですか? – Managu

+0

DiLasciaの記事を読んで、彼は私ができるよりもこれをやりたい理由を取り上げています。 – paxos1977

+0

また、MSDNのhttp://msdn.microsoft.com/en-us/library/k13k85ky.aspxで、__declspec(novtable)を使用してプログラムサイズを大幅に削減できることが示唆されています。 – paxos1977

答えて

7

GCCマニュアルのtype attributes pageの下にリストされていました。 GCCはタイプアトリビュートを使用してタイプ(アライメントやパディングなど)に余分な注釈を追加しますが、そこには__declspc(novtable)に相当するタイプアトリビュートはありません。

この最適化に関するman pageにはコンパイラフラグも表示されません。

関連する問題