Advertencia C28196
No se cumple el requisito. (La expresión no se evalúa como true).
Esta advertencia indica que la función que se está analizando tiene una __notnull
anotación , __null
__drv_valueIs
o similar en un _Out_
parámetro o en el valor devuelto, pero el valor devuelto es incoherente con esa anotación.
Comentarios
Anotaciones como __notnull
se describen invariables sobre _Out_
parámetros y valores devueltos, que sirve tanto como documentación como una comprobación de integridad para el autor de la función. Advertencia C28196 indica una discrepancia entre las anotaciones y el comportamiento real de la función. La advertencia puede ser útil para detectar casos en los que una función puede comportarse inesperadamente para determinados valores de entrada. A continuación, el autor decide cuál es el comportamiento previsto de la función y adapta las anotaciones o la implementación en consecuencia.
Ejemplos
La siguiente función provoca la advertencia C28196 porque se anota con _Ret_notnull_
aunque algunas rutas de acceso de código devuelvan un puntero nulo.
#include <sal.h>
_Ret_notnull_
Item *get_item(_In_reads_(len) Item *items, size_t len, size_t index) {
if (index >= len) {
return nullptr;
}
return items + index;
}
Para resolver este problema, afina la anotación para reflejar con precisión el comportamiento de la función.
#include <sal.h>
_When_(index < len, _Ret_notnull_)
Item *get_item(_In_reads_(len) Item *items, size_t len, size_t index) {
if (index >= len) {
return nullptr;
}
return items + index;
}
Consulte también
Anotación de parámetros de función y valores devueltos
Especificar cuándo y dónde se aplica una anotación\
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de