SYNOPSIS

  • #include <allegro5/allegro.h>
    
    al_fixed al_fixsub(al_fixed x, al_fixed y);
    
    

DESCRIPTION

Although fixed point numbers can be subtracted with the normal - integer operator, that doesn\[aq]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 Allegro\[aq]s errno and clamp the result, rather than just letting it wrap.

Example:

  •     al_fixed result;
    
        /* This will put 4965 into `result\[aq]. */
        result = al_fixsub(al_itofix(5000), al_itofix(35));
    
        /* Sets errno and puts -32768 into `result\[aq]. */
        result = al_fixsub(al_itofix(-31000), al_itofix(3000));
        assert(!al_get_errno()); /* This will fail. */
    
    

RETURN VALUE

Returns the clamped result of subtracting y from x, setting Allegro\[aq]s errno to ERANGE if there was an overflow.

RELATED TO al_fixsub…

al_fixadd(3alleg5), al_fixmul(3alleg5), al_fixdiv(3alleg5), al_get_errno(3alleg5).