In C and C++ assert
is a very heavyweight routine, writing an error to stdout
and terminating the program. In our application we have implemented a much more robust replacement for assert and given it its own macro. Every effort has been made to replace assert
with our macro, however there are still many ways assert
can be reintroduced (e.g., from internal third-party libraries, naïve injection, etc.)
Any suggestions on how we can reduce, limit or even eradicate uses of assert
? The best answer will be one the compiler can catch for us so we don't have to babysit the code base as much as we do currently.
I'm not sure I really understand the problem, actually. Asserts are only expensive if they go off, which is fine anyway, since you're now in an exception situation.
assert
is only enabled in debug builds, so use the release build of a third-party library. But really, asserts shouldn't be going off every moment.