The DI(exprn) checks that the exprn is true in the same way as assert(3).
It is however implemented by generating debugger commands from the source
code and so only works if you run the command under a debugger after
source the command file generated by nana(1).
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.
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 DI, DIG, etc DI.h also provides DN, DNG, etc which are
used to check that an expression is never true.