c++ - titulo - ¿Cuál es el propósito de__in__out__in_opt__allowed(), cómo funcionan? ¿Debo usar construcciones similares en mi propio código?
qué impacto tienen las metaetiquetas y las etiquetas de título en el motor de búsqueda (4)
Algunas de estas definiciones de preprocesador se encuentran en la función WinMain y otras funciones de la biblioteca de Windows. ¿Cuál es su propósito? ¿Cómo trabajan? ¿Es una buena práctica escribirlas en sus implementaciones o llamadas a funciones?
Mi investigación inicial sugiere que simplemente se configuran como equivalentes a:
#define __in
#define __out
#define __in_opt
Lo que significa que se reemplazan con nada en el pase de preprocesador. ¿Son solo un método de documentación, sin ninguna funcionalidad?
Si es así, puedo ver la ventaja de documentar el código en línea como este. Con algo como doxygen necesitas escribir los nombres de los parámetros dos veces. Entonces, en teoría, esto podría ayudar a reducir la duplicación y mantener la consistencia ...
No tengo ninguna teoría de cómo se supone que __allowed()
funciona.
Estas macros de Microsoft generalmente se expanden a nada, y están pensadas como sugerencias para el lector.
Sin embargo, la última vez que verifiqué, por ejemplo, la sugerencia de los argumentos de MessageBox
fue completamente errónea, aludiendo que el primer, segundo y tercer argumento tenían valores predeterminados útiles (cuando se especifica 0), mientras que en realidad el primer y cuarto argumento tienen valores predeterminados útiles. Tal vez también el argumento del título, que por defecto es "Error", pero nunca lo encontré útil. Por lo tanto, es solo una cosa de Microsoft, insinuaciones de que no puedes y no debes confiar, solo un desorden visual engañoso.
Salud y salud,
Las anotaciones SAL son útiles para dos cosas:
- Análisis estático a través de PREfast (compilar con / analizar)
- Los lectores humanos pueden ver las anotaciones y descubrir cómo se debe llamar a una función, y determinar rápidamente los parámetros de entrada / salida.
De hecho, las macros se expanden a varias expresiones declpec cuando su código se compila con el análisis activado. Yo uso estas anotaciones todo el tiempo en mi código.
Se utilizan en una herramienta de análisis semántico de Microsoft como marcas de código. A menos que planee usar esta herramienta usted mismo, no tiene ningún propósito usarlas.
Son anotaciones SAL en el lenguaje de anotación de código fuente. Las herramientas de Microsoft dependen de ello. El artículo de MSDN Library está aquí . Un buen ejemplo es el análisis de código . Otra herramienta bastante no relacionada, pero habilitada por estas anotaciones es el Asistente de interoperabilidad de Pinvoke.