Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tópico descreve as macros de configuração C++/WinRT. Salvo indicação em contrário, estas regras aplicam-se a todos os macros de configuração C++/WinRT:
- Todos os ficheiros ligados para formar um único módulo (
.exeou.dll) devem ter definições de macro idênticas. Isso inclui bibliotecas estáticas. - Todas as definições de macro devem estar concluídas antes de incluir qualquer ficheiro de cabeçalho C++/WinRT.
- Não pode alterar nenhuma definição de macro depois de incluir qualquer ficheiro de cabeçalho C++/WinRT.
WINRT_LEAN_AND_MEAN
Se definido, desativa estas funcionalidades raramente usadas (para reduzir os tempos de compilação):
- A capacidade de implementar interfaces exclusivas fora do componente.
- Especializações STD::HASH para Apontadores Inteligentes de Interface e Classe de Execução.
- Suporte para enviar diretamente um hstring ou IStringable para um fluxo C++, desde a versão 2.0.221101.3.
Podes combinar ficheiros com diferentes definições para WINRT_LEAN_AND_MEAN.
Ficheiros que não definem WINRT_LEAN_AND_MEAN acedem às funcionalidades raramente usadas.
WINRT_NO_MODULE_LOCK
Se definido, desativa a contagem de objetos para o módulo atual. O módulo nunca é descarregado a partir do processo. Definir esta macro é habitual para executáveis (que nunca podem ser descarregados), ou para .dlls que pretendes deixar fixados. Não pode ser combinado com WINRT_CUSTOM_MODULE_LOCK.
WINRT_CUSTOM_MODULE_LOCK
Se definido, permite-lhe fornecer a sua própria implementação do winrt::get_module_lock. Não pode ser combinado com WINRT_NO_MODULE_LOCK.
A sua implementação personalizada do winrt::get_module_lock deve suportar as seguintes operações:
-
++winrt::get_module_lock(): Incremente a contagem de referência no bloqueio do módulo. -
--winrt::get_module_lock(): Diminuir a contagem de referência no bloqueio do módulo. -
if (winrt::get_module_lock()): Verifique se o número de referências é diferente de zero. (Necessário se estiveres a construir um DLL.)
WINRT_ASSERT, WINRT_VERIFY
Estas macros permitem-lhe personalizar o tratamento das asserções. WINRT_ASSERT não exige que o argumento seja avaliado. WINRT_VERIFY exige que o argumento seja avaliado, mesmo em builds sem depuração.
Se não personalizares estes macros e _DEBUG estiver definido, então o C++/WinRT torna-os equivalentes a _ASSERTE.
Se não personalizares estas macros e _DEBUG não estiver definida, então o C++/WinRT define WINRT_ASSERT para descartar a expressão não avaliada, e define WINRT_VERIFY para descartar a expressão após a avaliar.
WINRT_NO_MAKE_DETECTION
Se definido, desativa o diagnóstico padrão C++/WinRT que deteta que construiu por engano uma classe de implementação sem usar winrt::make.
Recomendamos fortemente que não definas este símbolo, porque fazê-lo esconde uma fonte comum de erros de programação.
WINRT_NO_SOURCE_LOCATION
Se definido, desativa a inclusão de informações sobre o ficheiro de origem e o número da linha (e, em compilações de depuração, informações sobre a função) na geração de erros.
Esta informação adicional não é usada pelo C++/WinRT, mas está disponível para outras bibliotecas que pretendam interoperar com exceções do C++/WinRT, como a Biblioteca de Implementação do Windows.
Por predefinição, a informação é incluída quando compilado no modo C++20 ou superior. Pode querer suprimir esta informação para reduzir o tamanho binário.
WINRT_DIAGNOSTICS
Se definido, permite que estatísticas internas acompanhem várias operações:
- O número de vezes que cada interface foi consultada.
- O número de vezes que cada fábrica foi solicitada (e se a fábrica é ágil).
WINRT_NATVIS
Quando definido, inclui funções auxiliares para ajudar nas visualizações de depuração nativas no Visual Studio. O código não é usado em tempo de execução; Existe apenas para depuração.
Se não personalizar esta macro, então as funções de suporte à visualização ficam ativadas se _DEBUG estiver definida. Para mais detalhes, veja Visual Studio native debug visualization (natvis) para C++/WinRT.
É permitido combinar ficheiros com diferentes definições para WINRT_NATVIS.
Se algum ficheiro for compilado com suporte WINRT_NATVIS , então o módulo resultante terá visualizações nativas de depuração ativadas.
WINRT_EXPORT, WINRT_FAST_ABI_SIZE
Não uses estes macros.
Windows developer