Tome un vistazo a este código:vacío "liberar" ASSERT macro bloquea el programa?
#include <cassert>
#ifdef DEBUG
#define ASSERT(expr) assert(expr)
#else
#define ASSERT(expr)
#endif /* DEBUG */
el programa se ejecutará sólo si tengo DEBUG
definido, de lo contrario se bloqueará y terminar sin resultados. Estoy usando MinGW en Eclipse Indigo CDT. ¡El consejo es apreciado!
Este es probablemente el segundo más razón común (después de las optimizaciones) para las diferencias entre las compilaciones de depuración y lanzamiento. –
Gracias por responder, solo una pregunta. ¿Sería una buena práctica simplemente '#definir ASSERT (expr) (expr)' (como lo que Kerrek SB había mencionado) para los no-depuradores, y simplemente no preocuparse por los efectos secundarios de allí en adelante? Tengo la sensación de que esto haría que mi código sea más legible. – AutoBotAM
@AutoBotAM: Si llamas a 'ASSERT'' VERIFY' en su lugar, entonces seguro, adelante. Pero no redefina 'ASSERT', las personas lo saben y esperan que no evalúe la expresión en las compilaciones' NDEBUG'. –