That's C++.
But I couldn't find the same restriction in C. In fact it seems that C allows it as long as you don't include any of the standard C header.
> 7.1.2 "Standard headers" §5 [...] The program shall not have any macros with names lexically identical to keywords currently defined prior to the inclusion of the header or when any macro defined in the header is expanded.