It's an interesting approach to bring more expressiveness to C, this part need a bit more thought:
"If any spaces or parentheses appear in the type name, they will be substituted by an underscore. Thus unsigned int will become unsigned_int the type BitInt(27) becomes BitInt_27_ ."
Because "unsigned_int" (or any combination of the base types with an underscore) can already be used on user code.