2009-11-24 5 views
11

Gibt es ein g ++ -Äquivalent zu Visual Studio __declspec(novtable) Argument?Gibt es eine g ++ Entsprechung zu Visual Studio __declspec (novtable)?

Grundsätzlich kann das Argument __declspec(novtable) in einer reinen virtuellen Basisklasse verwendet werden, um die Erstellung einer Vtable für die Basisklasse sowie von Vtable-Initialisierungs-/Deinitialisierungscode im contstructor/destructor zu unterdrücken. Z. B.

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

Siehe Paul DiLascia's article für weitere Informationen. Siehe auch meine verwandte question.

+0

Nur neugierig: Es scheint mir, dass das Verwerfen der Vtable für PureVirtualBaseClass eine Mikrooptimierung, und in der Regel eine sehr kleine ist. Was ist der Grund dafür? – Managu

+0

Lesen Sie DiLascia's Artikel, er deckt die Gründe dafür ab, dass ich das besser machen will als ich kann. – paxos1977

+0

Auch diese http://msdn.microsoft.com/en-us/library/k13k85ky.aspx heute auf MSDN gefunden, wo sie vorschlagen, dass eine signifikante Reduzierung der Programmgröße mit __declspec (novtable) sein kann. – paxos1977

Antwort

7

Ich glaube nicht, dass es einen gibt - wenn es war, würde es unter dem type attributes page des GCC-Handbuchs aufgeführt werden. GCC verwendet Typattribute, um Typen zusätzliche Beschriftungen hinzuzufügen (z. B. Ausrichtung und Auffüllung), aber es gibt kein Typattribut, das dem dort aufgeführten __declspc(novtable) entspricht.

Ich sehe auch keine Compiler-Flag in der man page in Bezug auf diese Optimierung.

Verwandte Themen