Redundant Tests for Debugging
You can insert extra checks, but if you choose to enable them you will rely on the development environment to carry them out for you, and then remove them once the software has been debugged.
(RJL: assert’s exit-on-fail becomes more palatable if conditional on #ifndef NDEBUG)…#endif