¿Hay algún mecanismo en D (D2) para obligar a compilar el código durante una compilación de versión?Compila el código para la compilación de versión en D
En C, es posible que tenga algo así como
#ifndef NDEBUG
/*Something that will only run in a debug build*/
#endif
sé que D tiene
debug(mymodule) {
//Do something
}
Pero esto requiere que el usuario pase -debug para cada módulo para activarlo.
Estoy buscando un mecanismo global que siempre ejecute el código en una compilación normal, pero compílelo cuando pase el indicador de liberación. Sé que algunas incorporaciones tienen esta capacidad (por ejemplo, afirmar), pero ¿hay alguna forma de que el código de usuario también lo haga?
Creo que parte del problema es que '' debug' y -release' no tienen nada que ver unos con otros en D. '-release' implica que se está compilando una versión de lanzamiento e inhabilita varias comprobaciones (como aserciones). '-debug' habilita las instrucciones de depuración. Como tal, podría argumentar que no hay realmente un "modo de depuración" en D. Tiene modo de liberación y modo sin liberación con la capacidad de habilitar sentencias de depuración en cualquier modo. No creo que '-release' se suponga que realmente cambie la semántica de tu código como' -debug', por lo que es probable que no puedas hacer lo que intentas hacer. –
No estoy buscando cambiar la semántica para la compilación de lanzamiento. Solo busco la mejor manera de agregar cheques, impresiones, etc. adicionales en una compilación no liberada que estará siempre activa durante el desarrollo. Lo veo como algo para darle a un desarrollador que rastree problemas más rápidamente. Las comprobaciones y advertencias adicionales pueden darles una pista sobre los módulos que deberían habilitar -debug on. – JRM
He dado una respuesta, pero de alguna manera, me siento mal por eso. Recomiendo solo usar -debug cuando devolve y 'debug {// ...}'. Es mejor hacer que sea fácil cometer errores al enviar, que al soltar, en mi humilde opinión. – 0scar