2011-12-03 12 views
8

Soppressione La generazione di vtable C++ può essere eseguita in MSVC utilizzando l'attributo __declspec(novtable). Tuttavia, sembra che there is no equivalent attribute per il compilatore GNU C++. Il fatto è che lasciando i vtables per le classi virtuali pure collegamenti inutilmente in __cxa_abort() e molti altri, e voglio evitare che ciò accada perché sto programmando per un sistema embedded. Quindi cosa dovrei fare?Come si sopprime la generazione di vtable C++ per le classi virtuali pure che usano G ++?

struct ISomeInterface 
{ 
    virtual void Func() = 0; 
}; 

class CSomeClass : public ISomeInterface 
{ 
    virtual void Func(); 
} 

void CSomeClass::Func() 
{ 
    //... 
} 

risposta

0

Il flag di compilazione -fno-rtti interrompe la generazione di informazioni di tipo di runtime.

Nella mia esperienza con C++ su piattaforme incorporate, questo ha impedito che si verifichino errori del compilatore vtable, suggerendo che impedisce di essere creati (e di conseguenza, le funzioni virtuali non funzioneranno).

Problemi correlati