The I(exprn) checks that the exprn is true in the same way as assert(3).
If the expression is false an error has been detected in the code
and some error handling code will be called.
exprn - the expression to be checked.
guard - the expression is normally only checked if the guard is true.
handler - a macro which generates the code that handles the error
param - a parameter which can be passed off to the handler. This can
be used for identifying the assertion failure in a space-efficent
manner, e.g. by copying it into a register before aborting.
decln - a variable declaration for use in a postcondition
assignment - an assignment expression setting a variable which
can then be used in a postcondition.
See nana.info for details on configuring the behaviour on error
detection, etc. You also need to include the nana library by using
-lnana if you use the default setup.
In addition to the I, IG, etc I.h also provides N, NG, etc which are
used to check that an expression is never true.