I find the typedef syntax not as simple as it appeared. http://stackoverflow.com/questions/3783016/fundamental-typedef-operand-syntax is the best explanation of the very confusing typedef syntax.
int x; // declares a variable named ‘x’ of type ‘int’
typedef int x; // declares a type named ‘x’ that is ‘int’
typedef char Decimal;
int(*F)(size_t); // declares a variable named F of type ‘int(*)(size_t)’
typedef int(*F)(size_t); // declares a type named F that is ‘int(*)(size_t)’
If you add the “typedef” prefix, instead of declaring a VARIABLE, you’ve declared a new TYPE-ALIAS instead.