Well, my C-Textbook says
for (unsigned int i = 50;i;i--) blink(123);
CARM don't like it. What's the reason?
Are you sure it's really just a 'C' textbook, and not a C++ textbook?
Otherwise, definiing the counter inside the 'for' clause must be one of those new-fangled ANSI updates not supported by Keil - see: http://www.keil.com/product/isoansi.asp