Wie unterdrücke ich die Generierung von C ++ - Vtable für reine virtuelle Klassen mit G ++?

8

Die Unterdrückung der C ++ - Vtable-Generierung kann in MSVC mit dem __declspec(novtable) -Attribut erfolgen. Es scheint jedoch, dass kein äquivalentes Attribut für die GNU C ++ - Compiler. Tatsache ist, dass das Verlassen der VTables für rein virtuelle Klassen unnötigerweise in __cxa_abort() und vielen anderen Links erfolgt, und ich möchte vermeiden, dass dies passiert, weil ich für ein eingebettetes System programmiere. Also, was soll ich tun?

%Vor%     
fincs 03.12.2011, 22:17
quelle

2 Antworten

3

Es gibt etwas, das zu einem ähnlichen Ergebnis führt: #pragma interface .
#pragma implementation kann dies jedoch überschreiben.
Ссылка

    
Dave 03.12.2011 22:50
quelle
0

Das Compiler-Flag -fno-rtti stoppt die Generierung der Laufzeit-Information.

Nach meiner Erfahrung mit C ++ auf Embedded-Plattformen hat dies verhindert, dass Vtable-Compiler-Fehler auftreten, was darauf hindeutet, dass sie nicht erstellt werden können (und folglich funktionieren virtuelle Funktionen nicht).

    
gbmhunter 24.04.2013 00:33
quelle