Macro di configurazione C++/WinRT
Questo argomento descrive le macro di configurazione di C++/WinRT. Se non diversamente specificato, queste regole si applicano a tutte le macro di configurazione C++/WinRT:
- Tutti i file collegati insieme per formare un singolo modulo (
.exe
o.dll
) devono avere impostazioni di macro identiche. Che include librerie statiche. - Tutte le impostazioni della macro devono essere completate prima di includere qualsiasi file di intestazione C++/WinRT.
- Non è possibile modificare alcuna impostazione di macro dopo aver incluso qualsiasi file di intestazione C++/WinRT.
WINRT_LEAN_AND_MEAN
Se definito, disabilita queste funzionalità usate raramente (per ridurre i tempi di compilazione):
- Possibilità di implementare interfacce esclusive all'esterno del componente.
- le specializzazioni std::hash per puntatori intelligenti della classe di interfaccia e di runtime.
- Supporto per l'output diretto di un flusso hstring o IStringable in un flusso C++, dalla versione 2.0.221101.3.
È possibile combinare file con impostazioni diverse per WINRT_LEAN_AND_MEAN.
I file che non definiscono WINRT_LEAN_AND_MEAN ottenere l'accesso alle funzionalità usate raramente.
WINRT_NO_MODULE_LOCK
Se definito, disabilita i conteggi degli oggetti per il modulo corrente. Il modulo non viene mai scaricato dal processo. La definizione di questa macro è personalizzata per i file eseguibili (che non possono mai essere scaricati) o per .dll
che si intende lasciare bloccata. Non può essere combinato con WINRT_CUSTOM_MODULE_LOCK.
WINRT_CUSTOM_MODULE_LOCK
Se definito, consente di fornire la propria implementazione di winrt::get_module_lock. Non può essere combinato con WINRT_CUSTOM_MODULE_LOCK.
L'implementazione personalizzata di winrt::get_module_lock deve supportare le operazioni seguenti:
++winrt::get_module_lock()
: Aumentare il conteggio dei riferimenti sul blocco del modulo.--winrt::get_module_lock()
: Diminuire il conteggio dei riferimenti sul blocco del modulo.if (winrt::get_module_lock())
: Controllare se il conteggio dei riferimenti è diverso da zero. (Necessario se si sta creando una DLL.)
WINRT_ASSERT, WINRT_VERIFY
Queste macro consentono di personalizzare la gestione delle asserzioni. WINRT_ASSERT non richiede la valutazione dell'argomento. WINRT_VERIFY richiede che l'argomento venga valutato, anche nelle compilazioni non di debug.
Se non si personalizzano queste macro e _DEBUG è definito, C++/WinRT le rende equivalenti a _ASSERTE.
Se non si personalizzano queste macro e _DEBUG non è definito, C++/WinRT definisce WINRT_ASSERT per eliminare l'espressione non valutata e definisce WINRT_VERIFY per eliminare l'espressione dopo la valutazione.
WINRT_NO_MAKE_DETECTION
Se definito, disabilita la diagnostica C++/WinRT predefinita che rileva che è stata creata erroneamente una classe di implementazione senza usare winrt::make.
È consigliabile non definire questo simbolo, perché in questo modo si maschera una fonte comune di errori di programmazione.
WINRT_DIAGNOSTICS
Se definito, consente alle statistiche interne di tenere traccia di varie operazioni:
- Numero di query su ogni interfaccia.
- Numero di volte in cui è stata richiesta ogni factory (e se la factory è agile).
WINRT_NATVIS
Se definito, include funzioni helper per facilitare il debug delle visualizzazioni native in Visual Studio. Il codice non viene usato in fase di esecuzione; esiste solo per il debug.
Se non si personalizza questa macro, le funzioni di supporto per la visualizzazione vengono abilitate se _DEBUG è definito. Visualizzazione del debug nativo di Visual Studio (natvis) per C++/WinRT.
È possibile combinare file con impostazioni diverse per WINRT_LEAN_AND_MEAN.
Se un file viene compilato con WINRT_NATVIS supporto, il modulo risultante avrà visualizzazioni di debug native abilitate.
WINRT_EXPORT, WINRT_FAST_ABI_SIZE
Non uso più queste informazioni.