Yes, that would be faster. However you have to put everything in Parentheses:
Code:
#define str_height(str,fnt) (fnt->dy * (int)*str->pad)


Otherwise code like this would fail, because in this case / is evaluated before *:
Code:
printf("%i", 40/str_height(test, arial));


if str_height returns 40, your old macro would return 2 instead of 1.

Further more, you get strange compiler errors if something goes wrong in or near the macro and you can't get a function-pointer(but I don't think you will ever need to have to point to the str_height function wink )

If you can live with that, I don't see why not to use your macro(with parentheses of course laugh ) and it should be faster