C++/WinRT yapılandırma makroları

Bu konuda C++/WinRT yapılandırma makroları açıklanmaktadır. Aksi belirtilmediği sürece, bu kurallar tüm C++/WinRT yapılandırma makroları için geçerlidir:

  • Tek bir modül (.exe veya .dll) oluşturmak için birbirine bağlı tüm dosyalar aynı makro ayarlarına sahip olmalıdır. Buna statik kitaplıklar da dahildir.
  • C++/WinRT üst bilgi dosyası dahil edilmeden önce tüm makro ayarlarının tamamlanması gerekir.
  • C++/WinRT üst bilgi dosyası ekledikten sonra herhangi bir makro ayarını değiştiremezsiniz.

WINRT_LEAN_AND_MEAN

Tanımlanırsa, nadiren kullanılan bu özellikleri devre dışı bırakır (derleme sürelerini azaltmak için):

  • Bileşenin dışında özel arabirimler uygulama olanağı.
  • arabirim ve çalışma zamanı sınıfı akıllı işaretçileri için std::hash özelleştirmeleri.
  • 2.0.221101.3 sürümünden bu yana bir C++ akışına doğrudan bir hstring veya IStringable çıkışı için destek.

dosyaları WINRT_LEAN_AND_MEAN için farklı ayarlarla birleştirmenize izin verilir.

WINRT_LEAN_AND_MEAN tanımlamayan dosyalar, nadiren kullanılan özelliklere erişebilir.

WINRT_NO_MODULE_LOCK

Tanımlanmışsa, geçerli modül için nesne sayılarını devre dışı bırakır. Modül hiçbir zaman işlemden kaldırılır. Bu makroyu tanımlamak, yürütülebilir dosyalar (asla bellekten çıkarılamayan) veya sabitlenmiş durumda bırakmayı düşündüğünüz .dll örnekleri için alışılmış bir uygulamadır. WINRT_CUSTOM_MODULE_LOCK ile birleştirilmeyebilir.

WINRT_CUSTOM_MODULE_LOCK

Tanımlanmışsa, kendi winrt::get_module_lock uygulamanızı sağlamanıza olanak tanır. WINRT_NO_MODULE_LOCK ile birleştirilmeyebilir.

winrt::get_module_lock özel uygulamanız aşağıdaki işlemleri desteklemelidir:

  • ++winrt::get_module_lock(): Modül kilidinin başvuru sayacını artırın.
  • --winrt::get_module_lock(): Modül kilidinin referans sayısını azaltın.
  • if (winrt::get_module_lock()): Referans sayısının sıfırdan farklı olup olmadığını kontrol edin. (DLL oluşturuyorsanız gereklidir.)

WINRT_ASSERT, WINRT_VERIFY

Bu makrolar onay işlemeyi özelleştirmenizi sağlar. WINRT_ASSERT, argümanın değerlendirilmesini gerektirmez. WINRT_VERIFY, hata ayıklama dışı derlemelerde bile argümanın değerlendirilmesini gerektirir.

Bu makroları özelleştirmezseniz ve _DEBUG tanımlanırsa, C++/WinRT bunları _ASSERTE eşdeğer hale getirir.

Bu makroları özelleştirmezseniz ve _DEBUG tanımlanmazsa, C++/WinRT ifadesi değerlendirilmeden atılacak WINRT_ASSERT tanımlar ve değerlendirdikten sonra ifadenin atılması için WINRT_VERIFY tanımlar.

WINRT_NO_MAKE_DETECTION

Tanımlanırsa, winrt::make kullanmadan yanlışlıkla bir uygulama sınıfı oluşturduğunuzu algılayan varsayılan C++/WinRT tanılamasını devre dışı bırakır.

Bunu yapmak yaygın bir programlama hata kaynağını maskelediğinden bu simgeyi tanımlamamanızı kesinlikle öneririz.

WINRT_NO_SOURCE_LOCATION

Tanımlanırsa, kaynak dosya ve satır numarası bilgilerinin (ve hata ayıklama derlemelerine, işlev bilgilerine) hata oluştururken eklenmesini devre dışı bırakır.

Bu ek bilgiler C++/WinRT tarafından kullanılmaz, ancak Windows Uygulama Kitaplığı gibi C++/WinRT özel durumları ile birlikte çalışabilmek isteyen diğer kitaplıklar için kullanılabilir hale getirilir.

Varsayılan olarak, bilgiler C++20 veya üzeri modda derlendiğinde eklenir. İkili boyutu azaltmak için bu bilgileri gizlemeyi isteyebilirsiniz.

WINRT_DIAGNOSTICS

Tanımlanırsa, iç istatistiklerin çeşitli işlemleri izlemesini sağlar:

  • Her bir arayüzün kaç kez sorgulandığı.
  • Her fabrikanın kaç kez istendiği (ve fabrikanın çevik olup olmadığı).

WINRT_NATVIS

Tanımlanırsa, Visual Studio yerel hata ayıklama görselleştirmelerinde yardımcı olacak yardımcı işlevler içerir. Kod çalışma zamanında kullanılmaz; yalnızca hata ayıklama için var.

Bu makroyı özelleştirmezseniz, _DEBUG tanımlanırsa görselleştirme destek işlevleri etkinleştirilir. Daha fazla ayrıntı için bkz. C++/WinRT için yerel hata ayıklama görselleştirmesi (natvis) Visual Studio.

dosyaları WINRT_NATVIS için farklı ayarlarla birleştirmenize izin verilir.

Herhangi bir dosya WINRT_NATVIS desteğiyle derlenirse, sonuçta elde edilen modülde yerel hata ayıklama görselleştirmeleri etkinleştirilir.

WINRT_EXPORT, WINRT_FAST_ABI_SIZE

Bu makroları kullanmayın.