Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describen las macros de configuración de C++/WinRT. A menos que se indique lo contrario, estas reglas se aplican a todas las macros de configuración de C++/WinRT:
- Todos los archivos que están vinculados para formar un único módulo (
.exeo.dll) deben tener una configuración de macro idéntica. Esto incluye bibliotecas estáticas. - Todas las configuraciones de macro deben completarse antes de incluir cualquier archivo de encabezado de C++/WinRT.
- Es posible que no cambie ninguna configuración de macro después de incluir ningún archivo de encabezado de C++/WinRT.
WINRT_LEAN_AND_MEAN
Si se define, deshabilita estas características raras veces usadas (con el fin de reducir los tiempos de compilación):
- La capacidad de implementar interfaces exclusivas fuera del componente.
- especializaciones de std::hash para punteros inteligentes a interfaces y clases del entorno de ejecución.
- Admite enviar directamente un hstring o IStringable a un flujo de C++, desde la versión 2.0.221101.3.
Se permite combinar archivos con diferentes configuraciones para WINRT_LEAN_AND_MEAN.
Los archivos que no definen WINRT_LEAN_AND_MEAN obtienen acceso a las características que se usan con poca frecuencia.
WINRT_NO_MODULE_LOCK
Si se define, deshabilita los recuentos de objetos para el módulo actual. El módulo nunca se descarga del proceso. Definir esta macro es habitual para los ejecutables (que nunca pueden descargarse) o para las .dll, si pretende mantenerlas fijadas. No se puede combinar con WINRT_CUSTOM_MODULE_LOCK.
WINRT_CUSTOM_MODULE_LOCK
Si se define, le permite proporcionar su propia implementación de winrt::get_module_lock. No se puede combinar con WINRT_NO_MODULE_LOCK.
La implementación personalizada de winrt::get_module_lock debe admitir las siguientes operaciones:
-
++winrt::get_module_lock(): incremente el recuento de referencias en el bloqueo del módulo. -
--winrt::get_module_lock(): Disminuya el contador de referencias del bloqueo del módulo. -
if (winrt::get_module_lock()): compruebe si el recuento de referencias es distinto de cero. (Necesario si estás creando una DLL.)
WINRT_ASSERT, WINRT_VERIFY
Estas macros permiten personalizar el control de aserciones. WINRT_ASSERT no requiere que se evalúe el argumento. WINRT_VERIFY requiere que el argumento se evalúe, incluso en compilaciones que no sean de depuración.
Si no se personalizan estas macros y _DEBUG está definido, C++/WinRT hace que sean equivalentes a _ASSERTE.
Si no personaliza estas macros y _DEBUG no está definida, C++/WinRT define WINRT_ASSERT para descartar la expresión no evaluada y define WINRT_VERIFY para descartar la expresión después de evaluarla.
WINRT_NO_MAKE_DETECTION
Si se define, deshabilita el diagnóstico predeterminado de C++/WinRT que detecta que ha creado erróneamente una clase de implementación sin usar winrt::make.
Se recomienda encarecidamente no definir este símbolo, ya que al hacerlo se enmascara un origen común de errores de programación.
WINRT_NO_SOURCE_LOCATION
Si se define, deshabilita la inclusión de la información del archivo fuente y del número de línea (y, en compilaciones de depuración, de la función) al generar errores.
C++/WinRT no usa esta información adicional, pero está disponible para otras bibliotecas que desean interoperar con excepciones de C++/WinRT, como la biblioteca de implementación de Windows.
De forma predeterminada, la información se incluye cuando se compila en modo C++20 o superior. Es posible que desee suprimir esta información para reducir el tamaño binario.
WINRT_DIAGNOSTICS
Si se define, permite que las estadísticas internas realicen un seguimiento de varias operaciones:
- Número de veces que se ha consultado cada interfaz.
- Número de veces que se solicitó cada fábrica (y si la fábrica es ágil).
WINRT_NATVIS
Si se define, incluye funciones auxiliares para ayudar en visualizaciones de depuración nativas en Visual Studio. El código no se usa en tiempo de ejecución; solo existe para la depuración.
Si no personaliza esta macro, las funciones de compatibilidad con la visualización se habilitan si se define _DEBUG. Para obtener más información, consulte visualización nativa de depuración de Visual Studio (natvis) para C++/WinRT.
Puede combinar archivos con configuraciones diferentes para WINRT_NATVIS.
Si algún archivo se compila con compatibilidad con WINRT_NATVIS, el módulo resultante tendrá habilitadas las visualizaciones nativas de depuración.
WINRT_EXPORT, WINRT_FAST_ABI_SIZE
No use estas macros.