fixadd − Safe function to add fixed point numbers clamping overflow. Allegro game programming library.
fixed fixadd(fixed x, fixed y);
Although fixed point numbers can be added with the normal ’+’ integer operator, that doesn’t provide any protection against overflow. If overflow is a problem, you should use this function instead. It is slower than using integer operators, but if an overflow occurs it will set ‘errno’ and clamp the result, rather than just letting it wrap. Example:
/* This will put 5035 into ‘result’. */
result = fixadd(itofix(5000), itofix(35));
/* Sets ‘errno’ and puts -32768 into ‘result’. */
result = fixadd(itofix(-31000), itofix(-3000));
ASSERT(!errno); /* This will fail. */
Returns the clamped result of adding ‘x’ to ‘y’, setting ‘errno’ to ERANGE if there was an overflow.