Makro konfigurasi C++/WinRT
Topik ini menjelaskan makro konfigurasi C++/WinRT. Kecuali dinyatakan lain, aturan ini berlaku untuk semua makro konfigurasi C++/WinRT:
- Semua file yang ditautkan bersama untuk membentuk satu modul (
.exe
atau.dll
) harus memiliki pengaturan makro yang identik. Itu termasuk pustaka statis. - Semua pengaturan makro harus selesai sebelum menyertakan file header C++/WinRT apa pun.
- Anda tidak boleh mengubah pengaturan makro apa pun setelah menyertakan file header C++/WinRT apa pun.
WINRT_LEAN_AND_MEAN
Jika ditentukan, nonaktifkan fitur yang jarang digunakan ini (untuk mengurangi waktu kompilasi):
- Kemampuan untuk mengimplementasikan antarmuka eksklusif di luar komponen.
- std::hash specializations untuk antarmuka dan runtime class smart pointers.
- Dukungan untuk secara langsung menghasilkan hstring atau IStringable ke aliran C++, sejak versi 2.0.221101.3.
Anda diizinkan untuk menggabungkan file dengan pengaturan yang berbeda untuk WINRT_LEAN_AND_MEAN.
File yang tidak menentukan WINRT_LEAN_AND_MEAN mendapatkan akses ke fitur yang jarang digunakan.
WINRT_NO_MODULE_LOCK
Jika ditentukan, menonaktifkan jumlah objek untuk modul saat ini. Modul tidak pernah membongkar dari proses. Mendefinisikan makro ini adalah kebiasaan untuk executable (yang tidak pernah dapat membongkar), atau untuk .dll
itu Anda ingin membiarkan disematkan. Mungkin tidak digabungkan dengan WINRT_CUSTOM_MODULE_LOCK.
WINRT_CUSTOM_MODULE_LOCK
Jika ditentukan, memungkinkan Anda untuk memberikan implementasi Winrt::get_module_lock Anda sendiri. Mungkin tidak digabungkan dengan WINRT_NO_MODULE_LOCK.
Implementasi kustom Winrt::get_module_lock Anda harus mendukung operasi berikut:
++winrt::get_module_lock()
: Tingkatkan jumlah referensi pada kunci modul.--winrt::get_module_lock()
: Mengurangi jumlah referensi pada kunci modul.if (winrt::get_module_lock())
: Periksa apakah jumlah referensi bukan nol. (Diperlukan jika Anda membangun DLL.)
WINRT_ASSERT, WINRT_VERIFY
Makro ini memungkinkan Anda menyesuaikan penanganan pernyataan. WINRT_ASSERT tidak memerlukan argumen untuk dievaluasi. WINRT_VERIFY mengharuskan argumen dievaluasi, bahkan dalam build non-debug.
Jika Anda tidak menyesuaikan makro ini, dan _DEBUG ditentukan, C++/WinRT membuatnya setara dengan _ASSERTE.
Jika Anda tidak menyesuaikan makro ini, dan _DEBUG tidak ditentukan, maka C++/WinRT menentukan WINRT_ASSERT untuk membuang ekspresi yang tidak dievaluasi, dan menentukan WINRT_VERIFY untuk membuang ekspresi setelah mengevaluasinya.
WINRT_NO_MAKE_DETECTION
Jika ditentukan, menonaktifkan diagnostik C++/WinRT default yang mendeteksi bahwa Anda salah membuat kelas implementasi tanpa menggunakan winrt::make.
Kami sangat menyarankan agar Anda tidak menentukan simbol ini, karena melakukannya menutupi sumber umum kesalahan pemrograman.
WINRT_DIAGNOSTICS
Jika ditentukan, memungkinkan statistik internal untuk melacak berbagai operasi:
- Frekuensi setiap antarmuka dikueri.
- Berapa kali setiap pabrik diminta (dan apakah pabrik tangkas).
WINRT_NATVIS
Jika ditentukan, sertakan fungsi pembantu untuk membantu dalam visualisasi debug asli di Visual Studio. Kode tidak digunakan saat runtime; hanya ada untuk penelusuran kesalahan.
Jika Anda tidak menyesuaikan makro ini, fungsi dukungan visualisasi diaktifkan jika _DEBUG ditentukan. Untuk detail selengkapnya, lihat Visual Studio visualisasi debug asli (natvis) untuk C++/WinRT.
Anda diizinkan untuk menggabungkan file dengan pengaturan yang berbeda untuk WINRT_NATVIS.
Jika ada file yang dikompilasi dengan dukungan WINRT_NATVIS , modul yang dihasilkan akan mengaktifkan visualisasi debug asli.
WINRT_EXPORT, WINRT_FAST_ABI_SIZE
Jangan gunakan makro ini.