Q: What is assert() and when would I use it?
A: It is a macro, defined in <assert.h>, for testing ``assertions''. An assertion essentially documents an assumption being made by the programmer, an assumption which, if violated, would indicate a serious programming error. For example, a function which was supposed to be called with a non-null pointer could write
assert(p != NULL);A failed assertion terminates the program. Assertions should not be used to catch expected errors, such as malloc or fopen failures.
References:
K&R2 Sec. B6 pp. 253-4
ISO Sec. 7.2
H&S Sec. 19.1 p. 406