En C y C++ assert
es una rutina muy pesada muy, escribiendo un error en stdout
y terminando el programa. En nuestra aplicación, hemos implementado un reemplazo mucho más robusto para assert y dado su propio macro. Se ha hecho todo lo posible para reemplazar assert
con nuestra macro, sin embargo, todavía hay muchas maneras assert
puede reintroducirse (por ejemplo, de bibliotecas internas de terceros, la inyección ingenuo, etc.)Ayudando a evitar la afirmación ... ¡siempre!
¿Alguna sugerencia sobre cómo podemos reducir, limitar o incluso erradicar los usos de assert
? La mejor respuesta será aquella que el compilador pueda captar para nosotros, de modo que no tengamos que cuidar la base de códigos tanto como lo hacemos actualmente.
¿Qué es exactamente lo malo de 'assert()' que termina el programa? –
Bueno, para empezar, el programa termina dejando assert() solo válido para errores OMG USTED ROMPÓ EL UNIVERSO. ¿No sería desagradable ser el usuario y bloquear el programa porque su recuento de encabezados de informe TPS está desactivado en uno? Tal vez solo quiera que registre la afirmación fallida para que el usuario pueda continuar lo que está haciendo. Tal vez desee enviar el error de afirmación en lugar de confiar en el usuario desconcertado y molesto para saber hacer eso. – Schwern
Si tus usuarios están ejecutando compilaciones de depuración, tienes problemas más serios. Las afirmaciones y el registro son cosas completamente diferentes, y no deben confundirse. –