2011-12-03 22 views
8

C++ vtable nesnesinin yükseltilmesi, __declspec(novtable) özniteliği kullanılarak MSVC'de yapılabilir. Ancak, GNU C++ derleyicisi için there is no equivalent attribute görünüyor. Gerçek şu ki, saf sanal sınıflar için veterinerleri gereksiz yere __cxa_abort() ve diğerlerinin gereksiz bağlantılarına bırakıyor ve bunun olmasını önlemek istiyorum çünkü gömülü bir sistem için programlama yapıyorum. Peki ne yapmalıyım?G ++ kullanarak saf sanal sınıflar için C++ vtable jenerasyonunu nasıl bastırırım?

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

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

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

cevap

0

çalışma zamanı türü bilgileri nesil durur -fno-rtti derleyici bayrağı.

Katıştırılmış platformlarda C++ ile yaptığım deneyimlerimde, bu durum, vtable derleyici hatalarının oluşmasını engelleyerek, bunların oluşturulmasını önlediğini (ve sonuç olarak sanal işlevlerin çalışmayacağını) önler.

İlgili konular