++ Afirmações C que pode exibir uma string personalizada com impulso ou STL?
Pergunta
Eu realmente quero ser capaz de ir: (em C ++)
assert( num > 0, "The number must be greater than zero!");
Em C # XNA, eles têm um método que faz exatamente isso:
Debug.Assert( num > 0, "The number must be greater than zero!");
Existe alguma maneira de fazer isso de modo que o tempo de execução me dá um erro completo que significa não apenas "uma afirmação falhou" erro?
Solução
Você pode usar isso em mais qualquer afirmação:
assert(("The number must be greater than zero!", num > 0));
Outras dicas
O tempo de execução normalmente exibe a expressão que falhou, assim você pode fazer algo como isto:
assert(num > 0 && "The number must be greater than zero!");
O que não vai afetar a lógica, mas a mensagem de falha de declaração conterá uma cadeia descritiva.
Além disso, isso funciona sem a necessidade do STL ou impulso.
Use assert (num> 0 && "O número deve ser maior que zero!");
Usando o impulso que você pode usar sua assert conforme descrito no 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!");
faria exatamente conforme solicitado.