Pregunta

Realmente quiero poder ir: (en C ++)

assert( num > 0, "The number must be greater than zero!");

En C # XNA, tienen un método que hace exactamente esto:

Debug.Assert( num > 0, "The number must be greater than zero!");

¿Hay alguna forma de hacer esto para que el tiempo de ejecución me dé un error completo de significado, no solo "una aseveración fallida"? error?

¿Fue útil?

Solución

Puede usar esto en la mayoría de las aseveraciones:

assert(("The number must be greater than zero!",  num > 0));

Otros consejos

El tiempo de ejecución generalmente muestra la expresión que falló, por lo que puedes hacer algo como esto:

assert(num > 0 && "The number must be greater than zero!");

Lo que no afectará la lógica, pero el mensaje de error de aserción contendrá una cadena descriptiva.

Además, esto funciona sin necesidad de STL o Boost.

Use assert (num > 0 & amp; & amp; " ¡El número debe ser mayor que cero! ");

Usando BOOST puede usar su asertivo como se describe en http: //www.boost.org/doc/libs/1_50_0/libs/utility/assert.html :

#include <boost/assert.hpp>
/* ... */

BOOST_ASSERT_MSG( num > 0, "The number must be greater than zero!");

haría exactamente lo solicitado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top