Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma popisuje konfigurační makra C++/WinRT. Pokud není uvedeno jinak, platí tato pravidla pro všechna konfigurační makra C++/WinRT:
- Všechny soubory, které jsou propojeny do jednoho modulu (
.exenebo.dll), musí mít identické nastavení maker. To zahrnuje statické knihovny. - Před zahrnutím jakéhokoliv souboru hlaviček C++/WinRT musí být všechna nastavení maker dokončena.
- Po zahrnutí jakéhokoli souboru hlaviček C++/WinRT nesmíte změnit žádné nastavení makra.
WINRT_LEAN_AND_MEAN
Pokud je definováno, zakáže tyto zřídka používané funkce (aby se zkrátila doba kompilace):
- Možnost implementovat exkluzivní rozhraní mimo komponentu.
- std::hash – specializace pro inteligentní ukazatele třídy rozhraní a modulu runtime
- Podpora přímého výstupu hstringu nebo IStringable do datového proudu C++ od verze 2.0.221101.3.
Soubory můžete kombinovat s různými nastaveními pro WINRT_LEAN_AND_MEAN.
Soubory, které nedefinují WINRT_LEAN_AND_MEAN, získají přístup k zřídka používaným funkcím.
WINRT_NO_MODULE_LOCK
Pokud je definováno, zakáže počet objektů pro aktuální modul. Modul se z procesu nikdy neuvolní. Definování tohoto makra je obvyklé u spustitelných souborů (které se nikdy nemohou uvolnit z paměti) nebo u .dll, které zamýšlíte ponechat připnuté. Nelze kombinovat s WINRT_CUSTOM_MODULE_LOCK.
WINRT_CUSTOM_MODULE_LOCK
Pokud je definováno, můžete zadat vlastní implementaci winrt::get_module_lock. Nelze kombinovat s WINRT_NO_MODULE_LOCK.
Vaše vlastní implementace winrt::get_module_lock musí podporovat následující operace:
-
++winrt::get_module_lock(): Zvyšte počet referencí u zámku modulu. -
--winrt::get_module_lock(): Snižte počet referencí zámku modulu. -
if (winrt::get_module_lock()): Zkontrolujte, jestli je počet odkazů nenulová. (Potřebné, pokud vytváříte knihovnu DLL.)
WINRT_ASSERT, WINRT_VERIFY
Tato makra umožňují přizpůsobit zpracování asercí. WINRT_ASSERT nevyžaduje vyhodnocení argumentu. WINRT_VERIFY vyžaduje, aby byl argument vyhodnocen, a to i v sestaveních bez ladění.
Pokud tato makra nepřizpůsobíte a _DEBUG je definovaná, C++/WinRT je vytvoří ekvivalentem _ASSERTE.
Pokud tato makra nepřizpůsobíte a _DEBUG není definována, pak C++/WinRT definuje WINRT_ASSERT tak, aby zahodilo výraz, aniž by jej vyhodnotilo, a definuje WINRT_VERIFY tak, aby výraz po jeho vyhodnocení zahodilo.
WINRT_NO_MAKE_DETECTION
Pokud je definováno, zakáže výchozí diagnostiku C++/WinRT, která zjistí, že jste omylem vytvořili třídu implementace bez použití winrt::make.
Důrazně doporučujeme, abyste tento symbol nedefinujte, protože tím se maskuje běžný zdroj programovacích chyb.
WINRT_NO_SOURCE_LOCATION
Pokud je definováno, zakáže zahrnutí informací o zdrojovém souboru a čísle řádku (a v ladicích sestaveních také informací o funkcích) při vytváření chyb.
Tyto další informace nejsou používány C++/WinRT, ale jsou k dispozici pro jiné knihovny, které chtějí spolupracovat s výjimkami C++/WinRT, jako je například knihovna implementace Windows.
Ve výchozím nastavení jsou informace zahrnuty při kompilaci v režimu C++20 nebo vyšší. Tyto informace můžete potlačit, aby se zmenšila binární velikost.
WINRT_DIAGNOSTICS
Pokud je definováno, umožňuje interní statistiky sledovat různé operace:
- Kolikrát bylo každé rozhraní dotazováno.
- Kolikrát byla každá továrna požadována (a jestli je továrna agilní).
WINRT_NATVIS
Pokud je definováno, obsahuje pomocné funkce, které vám pomůžou v nativních vizualizacích ladění v Visual Studio. Kód se nepoužívá za běhu; existuje pouze pro ladění.
Pokud toto makro nepřizpůsobíte, jsou funkce podpory vizualizace povoleny, pokud je definována _DEBUG . Další podrobnosti najdete v článku Visual Studio native debug visualization (natvis) for C++/WinRT.
Můžete kombinovat soubory s různými nastaveními pro WINRT_NATVIS.
Pokud je některý soubor zkompilován s podporou WINRT_NATVIS, bude mít výsledný modul povolené nativní vizualizace pro ladění.
WINRT_EXPORT, WINRT_FAST_ABI_SIZE
Tato makra nepoužívejte.
Windows developer