¿Cuál es el significado de estas palabras clave utilizadas antes de las variables en los parámetros de una función ?Significado de __in, __out, __in_opt
__in
__out
__in_opt
¿Cuál es el significado de estas palabras clave utilizadas antes de las variables en los parámetros de una función ?Significado de __in, __out, __in_opt
__in
__out
__in_opt
Esos son algunos de los más viejos de la decoración macro de Sal Anotaciones de Microsoft (the newer ones ahora sigue carcasa diferente, empezando con mayúscula). Estos no tienen ningún efecto real en la compilación (en VS 2010 ni siquiera están expandidos), están ahí para la documentación API en línea.
__in
: este parámetro es una entrada a la función (solo lectura, iniciador de llamadas inicializado).__out
: este parámetro contiene el resultado de la función cuando vuelve (solo escritura, iniciador de llamadas inicializado).__in_opt
: una anotación compuesto formado a partir de _in
y _opt
, _opt
indicios de que el parámetro es opcional y se puede ajustar a un valor predeterminado (generalmente NULL
).Puede obtener la explicación completa aquí de las decoraciones anteriores here.
es muy detallado, muchas gracias. He buscado durante mucho tiempo, finalmente encontré la respuesta aquí. – Zcube
Según la respuesta de Nercolis, estos son atributos de anotación SAL. Sin embargo, estos no son solo interno o solo para API documentación. El verdadero propósito es Code Analysis. Cuando crea el proyecto con la opción de compilador /analyze (Propiedades del proyecto, Análisis de código -> General), estos desempeñan un papel importante en la búsqueda de los problemas de codificación.
Por ejemplo, si un argumento de puntero particular dice __in
, entonces no se debe pasar un puntero nulo. La función no verificará nulo y puede causar SEH. __in_opt
argumento puede ser nulo. Cuando el compilador encuentra algún problema, lo informa como una advertencia. Ver this article.
esas no son palabras clave, eso es la anotación SAL de Microsoft – Necrolis
gracias, ¿eso significa que no tiene ningún efecto sustancial? – Zcube
para el compilador no, para el codificador debería ayudarlo a usar la API correctamente. – Necrolis