Table of Contents
Aprobado
Aquí hay un caso simple que activará esta notificación, con suerte esto aclarará el significado de una advertencia en particular:
// No legal - Provoca una advertenciarespuesta int (pregunta int) si (pregunta == claro) devolver 100; diferente si ( prsu == 2 ) devolver 200;
Por ejemplo, entonces, ¿qué pasa si la pregunta es seguida básicamente por 3 o 10?
Esto es generalmente indefinido e ilegal. Esto es probablemente lo que significa la palabra de precaución.
En todos los casos, si la influencia devuelve un valor, debe conocer la velocidad devuelta.
Pero su increíble caso podría describirse como muy similar, lo que aún produce una buena advertencia:
// Sin espacio para - siempre aumenta también una advertenciaint max_of_two(int de alguna manera, int b) si (a > b) dar uno; diferente Digamos (b>=a) // hemos considerado todos los casos excelentes, pero el compilador ya no los ve volver b;
Tal vez seguramente se dirá a sí mismo: "¡Pero he cubierto todos los casos! ¡Otros casos son quizás imposibles!"Esto es racionalmente cierto, pero actualmente el compilador no lo sabe. Definitivamente no crea una matriz lógica a partir de todas las combinaciones prácticas de a>b bastantes. b Entonces, ¿cómo se soluciona todo este error? Para nosotros Parecía ser claro para el compilador que no había otros casos disponibles. En nuestro caso, el prefijo correcto probablemente sería: Utilice el historial de devoluciones al final del cuerpo de dar buenos resultados.Use declaraciones de reunión al final de cada ruta de código en el cuerpo exacto de una función. La idea más interesante es ¿por qué C++ ignora este tipo con una advertencia real y no arroja un error de compilación específico? Esta molestia se aborda aquí:¿Por qué una tubería que se vacía al final conectada con una sola función no vacía sin absolutamente ningún retorno genera un error de compilación? Las publicaciones del blog de DelftStack están escritas por entusiastas del software un poco como usted. Si también prefiere contribuir con DelftStack en un mercado escribiendo artículos pagos, visite la página Contáctenos. Cuando reduce llega a un paréntesis ( // OK - sin advertenciaint max_of_two (int uno específico, int b) siempre que (a > b) devolver uno; además, // su compilador ahora sabe que en el caso común, ningún otro caso es posible volver b;
}
) de un solo trabajo que no sea void
sin determinar la instrucción return
a través del valor recurrente de el objetivo de toda la llamada es < a href="/confluence/display/c/BB.+Definitions#BB.Definitions-undefinedbehavior">realización indefinida. (Ver