Aracılığıyla paylaş


Derleyici Seçenekleri Makroları

Uyarı

Etkin Şablon Kitaplığı (ATL) desteklenmeye devam eder. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

Bu makrolar belirli derleyici özelliklerini denetler.

Makro Açıklama
_ATL_ALL_WARNINGS ATL'nin önceki sürümlerinden dönüştürülen projelerde hataları etkinleştiren bir simge.
_ATL_APARTMENT_THREADED Nesnelerinizden birinin veya daha fazlasının apartman iş parçacığı kullanıp kullanmadığına bakın.
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS Bazı CString oluşturucuları açık hale getirir ve istenmeyen dönüştürmeleri önler.
_ATL_ENABLE_PTM_WARNING Bu makro, C++ standart söz dizimi gerektirecek şekilde tanımlayın. Üye işlevinin işaretçisini başlatmak için standart olmayan söz dizimi kullanıldığında C4867 derleyici hatasını oluşturur.
_ATL_FREE_THREADED Nesnelerinizden birinin veya daha fazlasının serbest veya nötr iş parçacığı kullanıp kullanmadığına bakın.
_ATL_MODULES İzin veren ile ATL projelerini derlemenize ve ATL'yi C++ modülleriyle kullanmanıza olanak tanır.
_ATL_MULTI_THREADED Projenin Her İkisi, Serbest veya Nötr olarak işaretlenmiş nesneleri olduğunu gösteren bir simge. Bunun yerine makro _ATL_FREE_THREADED kullanılmalıdır.
_ATL_NO_AUTOMATIC_NAMESPACE Ad alanının ATL olarak varsayılan olarak kullanılmasını engelleyen bir simge.
_ATL_NO_COM_SUPPORT COM ile ilgili kodun projenizle derlenmesini engelleyen bir simge.
ATL_NO_VTABLE Vtable işaretçisinin sınıfın oluşturucusunda ve yıkıcısında başlatılmasını engelleyen bir simge.
ATL_NOINLINE bir işlevin çizili olmaması gerektiğini gösteren simge.
_ATL_SINGLE_THREADED Tüm nesnelerinizin tek iş parçacığı modelini kullanıp kullanmadığına bakın.

_ATL_ALL_WARNINGS

ATL'nin önceki sürümlerinden dönüştürülen projelerde hataları etkinleştiren bir simge.

#define _ATL_ALL_WARNINGS

Açıklamalar

Visual C++ .NET 2002'den önce, ATL birçok uyarıyı devre dışı bıraktı ve kullanıcı kodunda hiç görünmemeleri için devre dışı bıraktı. Özellikle:

  • C4127 koşullu ifadesi sabittir

  • C4786 'identifier' : tanımlayıcı hata ayıklama bilgilerinde 'sayı' karakterlerine kesildi

  • C4201 standart olmayan uzantı kullanıldı: adsız yapı/birleşim

  • C4103 'filename' : hizalamayı değiştirmek için #pragma paketi kullanıldı

  • C4291 'bildirim' : eşleşen işleç silme bulunamadı; başlatma bir özel durum oluşturursa bellek boşaltılmaz

  • C4268 'identifier' : Derleyici tarafından oluşturulan varsayılan oluşturucu ile başlatılan 'const' statik/genel veriler nesneyi sıfırlarla doldurur

  • C4702 ulaşılamıyor kodu

Önceki sürümlerden dönüştürülen projelerde, bu uyarılar kitaplık üst bilgileri tarafından devre dışı bırakılmaya devam eder.

Bu davranışı değiştirmek için kitaplık üst bilgilerini eklemeden önce (pch.h Visual Studio 2017 ve önceki sürümlerde) dosyasına aşağıdaki satırı stdafx.h ekleyin.

#define _ATL_ALL_WARNINGS

Bu #define eklenirse, ATL üst bilgileri genel olarak devre dışı bırakılmamaları için bu uyarıların durumunu korumaya dikkat eder (veya kullanıcı uyarıları etkinleştirmek için değil, açıkça devre dışı bırakırsa).

Yeni projelerde bu #define ayar varsayılan olarak pch.h 'de (Visual Studio 2017 ve önceki sürümlerde stdafx.h) bulunur.

_ATL_APARTMENT_THREADED

Nesnelerinizden birinin veya daha fazlasının apartman iş parçacığı kullanıp kullanmadığına bakın.

_ATL_APARTMENT_THREADED

Açıklamalar

Daire iş parçacığını belirtir. Diğer seçenekler ve ATL nesnesi için kullanılabilen iş parçacığı oluşturma modellerinin açıklaması için bkz . Projenin İş Parçacığı Modeli ve Seçeneklerini Belirtme, ATL Basit Nesne Sihirbazı.

_ATL_CSTRING_EXPLICIT_CONSTRUCTORS

Bazı CString oluşturucuları açık hale getirir ve istenmeyen dönüştürmeleri önler.

_ATL_CSTRING_EXPLICIT_CONSTRUCTORS

Açıklamalar

Bu oluşturucu tanımlandığında, tek bir parametre alan tüm CString oluşturucular, giriş bağımsız değişkenlerinin örtük dönüştürmelerini engelleyen açık anahtar sözcükle derlenir. Bu, örneğin tanımlandığında _UNICODE , bir char* dizeyi oluşturucu bağımsız değişkeni olarak CString kullanmayı denerseniz derleyici hatasının sonucu olduğu anlamına gelir. Bu makro, dar ve geniş dize türleri arasında örtük dönüştürmeleri önlemeniz gereken durumlarda kullanın.

Makroyu _T tüm oluşturucu dize bağımsız değişkenlerinde kullanarak, tanımlanıp tanımlanmadığına _ATL_CSTRING_EXPLICIT_CONSTRUCTORS bakılmaksızın derleme hataları tanımlayabilir _UNICODE ve önleyebilirsiniz.

_ATL_ENABLE_PTM_WARNING

Üye işlevleri işaretçisi için ANSI C++ standart uyumlu söz diziminin kullanılmasını zorlamak için bu makroyu tanımlayın. Bu makronun kullanılması, üye işlevine işaretçi başlatmak için standart olmayan söz dizimi kullanıldığında C4867 derleyici hatasının oluşturulmasına neden olur.

#define _ATL_ENABLE_PTM_WARNING

Açıklamalar

ATL ve MFC kitaplıkları, Microsoft C++ derleyicisinin geliştirilmiş standart C++ uyumluluğuyla eşleşecek şekilde değiştirildi. ANSI C++ standardına göre, bir sınıf üyesi işlevinin işaretçisinin söz dizimi olmalıdır &CMyClass::MyFunc.

Tanımlanmadığında _ATL_ENABLE_PTM_WARNING (varsayılan durum), ATL/MFC makro eşlemelerinde C4867 hatasını (özellikle ileti eşlemeleri) devre dışı bırakır, böylece önceki sürümlerde oluşturulan kod daha önce olduğu gibi derlenebilir. tanımlarsanız _ATL_ENABLE_PTM_WARNINGkodunuz C++ standardına uygun olmalıdır.

Ancak, standart olmayan form kullanım dışı bırakıldı. Mevcut kodu C++ standart söz dizimine taşımanız gerekir. Örneğin aşağıdaki kod:

BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
   ON_COMMAND(ID_MYCOMMAND, OnMycommand)
END_MESSAGE_MAP()

Şöyle değiştirilmelidir:

BEGIN_MESSAGE_MAP(CMFCListViewDoc, CDocument)
   ON_COMMAND(ID_MYCOMMAND, &CMFCListViewDoc::OnMycommand)
END_MESSAGE_MAP()

Eşleme makroları için ve '&' karakterini ekleyin. Karakteri kodunuza yeniden eklememelisiniz.

_ATL_FREE_THREADED

Nesnelerinizden birinin veya daha fazlasının serbest veya nötr iş parçacığı kullanıp kullanmadığına bakın.

_ATL_FREE_THREADED

Açıklamalar

Boş iş parçacığını belirtir. Ücretsiz iş parçacığı oluşturma, çok iş parçacıklı bir apartman modeline eşdeğerdir. AtL nesnesi için kullanılabilen iş parçacığı modellerinin açıklaması için bkz . Diğer iş parçacığı oluşturma seçenekleri için Projenin İş Parçacığı Modelini Belirtme ve Seçenekler, ATL Basit Nesne Sihirbazı .

_ATL_MODULES

ATL projelerini C++ modülleriyle permissive-derlemenize ve ATL'yi kullanmanıza olanak tanır.

_ATL_MODULES

_ATL_MULTI_THREADED

Projenin Her İkisi, Serbest veya Nötr olarak işaretlenmiş nesneleri olduğunu gösteren bir simge.

_ATL_MULTI_THREADED

Açıklamalar

Bu simge tanımlanmışsa, ATL genel verilere erişimi doğru şekilde eşitleyecek kodu çeker. Yeni kod bunun yerine eşdeğer makroyu _ATL_FREE_THREADED kullanmalıdır.

_ATL_NO_AUTOMATIC_NAMESPACE

Ad alanının ATL olarak varsayılan olarak kullanılmasını engelleyen bir simge.

_ATL_NO_AUTOMATIC_NAMESPACE

Açıklamalar

Varsayılan olarak gerçekleştirilenler atlbase.h de dahil olmak üzere using namespace ATL bu simge tanımlanmamışsa adlandırma çakışmalarına yol açabilir. Bunu önlemek için bu simgeyi tanımlayın.

_ATL_NO_COM_SUPPORT

COM ile ilgili kodun projenizle derlenmesini engelleyen bir simge.

_ATL_NO_COM_SUPPORT

ATL_NO_VTABLE

Vtable işaretçisinin sınıfın oluşturucusunda ve yıkıcısında başlatılmasını engelleyen bir simge.

ATL_NO_VTABLE

Açıklamalar

Vtable işaretçisinin sınıfın oluşturucusunda ve yıkıcısında başlatılması engellenirse, bağlayıcı vtable'ı ve işaret ettiği tüm işlevleri ortadan kaldırabilir. olarak __declspec(novtable)genişletir.

Örnek

class ATL_NO_VTABLE CMyClass2 :

ATL_NOINLINE

bir işlevin çizili olmaması gerektiğini gösteren simge.

    ATL_NOINLINE inline
    myfunction()
    {
    ...
    }

Parametreler

myfunction
Çizili olmaması gereken işlev.

Açıklamalar

Üst bilgi dosyasına yerleştirilebilmesi için satır içi olarak bildirilmesi gerekse bile, bir işlevin derleyici tarafından satır içi olarak bildirilmediğinden emin olmak istiyorsanız bu simgeyi kullanın. olarak __declspec(noinline)genişletir.

_ATL_SINGLE_THREADED

Tüm nesnelerinizin tek iş parçacığı modelini kullanıp kullanmadığına ilişkin tanımlama

_ATL_SINGLE_THREADED

Açıklamalar

Nesnenin her zaman birincil COM iş parçacığında çalıştırıldığını belirtir. AtL nesnesi için kullanılabilen iş parçacığı modellerinin açıklaması için bkz . Diğer iş parçacığı oluşturma seçenekleri için Projenin İş Parçacığı Modelini Belirtme ve Seçenekler, ATL Basit Nesne Sihirbazı .

Ayrıca bkz.

Makrolar