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 .dllche 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.