Aracılığıyla paylaş


ATL Projesi için Derleyici İyileştirmesi Belirtme

Varsayılan olarak, atl Denetim Sihirbazı atl_no_vtable makro yeni sınıflar aşağıdaki gibi oluşturur:

class ATL_NO_VTABLE CProjName
{
   ...
};

atl _atl_no_vtable sonra şu şekilde tanımlar:

#ifdef _ATL_DISABLE_NO_VTABLE
   #define ATL_NO_VTABLE
#else
   #define ATL_NO_VTABLE __declspec(novtable)
#endif

atl_no_vtable makro _ATL_DISABLE_NO_VTABLE tanımlamazsanız, genişleyen declspec(novtable).Kullanarak declspec(novtable)sınıf yapıcı ve yıkıcı başlatılmış bir sınıfta bildirimi vtable işaretçisinin engeller.Projenizi yapılandırdığınızda, bağlayıcı vtable ve tüm işlevleri olduğu vtable noktaları ortadan kaldırır.

atl_no_vtable, kullanmalısınız ve sonuç olarak declspec(novtable), yalnızca doğrudan oluşturulabilmelidir olmayan temel sınıflar ile.Değil kullanmanız gerekir declspec(novtable) , projenizin en türetilmiş sınıfla çünkü bu sınıf (genellikle CComObject, CComAggObject, veya CComPolyObject) projenizin vtable işaretçisinin başlatır.

Sanal işlevlerini kullanan herhangi bir nesneyi oluşturucudan çağırmanız gerekir değil declspec(novtable).Bu çağrıları taşımalısınız FinalConstruct yöntem.

Olup, kullanmanız gereken kullanacağınızdan emin değilseniz declspec(novtable) değiştiricisi, atl_no_vtable makro herhangi bir sınıf tanımını kaldırın ya da genel olarak belirterek iptal edebilirsiniz

#define _ATL_DISABLE_NO_VTABLE

Stdafx.h öğesinde önce tüm atl başlık dosyaları dahil edilir.

Ayrıca bkz.

Görevler

Uygulama Sihirbazları Kullanarak Masaüstü Projeleri Oluşturma

Başvuru

ATL Proje Sihirbazı

atl com nesnelerinin temelleri

novtable

Varsayılan ATL Proje Yapılandırmaları

Kavramlar

Visual C++ Proje Türleri

atl ve c çalışma zamanı kodu ile programlama