mcd( b, a % b ); //mcd( a, a % b );
Eso fue una corrección? Creo que ya fue respondida por do-while.
Si, fue una correcion, que ya fue afirmada por
do-while.
mcd( b, a % b ); //mcd( a, a % b );
Ahora bien, lo de incluir stdlib.h para usar abs(), me parece mucho, no sé si en esto último estoy en lo correcto.
cbug, al contrario ya que en la etapa de enlazado se extrae solamente la funcion utilizada de la libreria stdlib.h, en este caso abs().
Ademas si te pones a comparar entre el codigo generado en asm usando una funcion propia _abs() y la que viene en la libreria stdlib.h, la diferencia es bastante notable y favorable para la funcion abs() y por ende mucho mas eficiente.
Salu10.