typeof is a GNU extension, but it (or an equivalent) is implemented in every compiler anyone actually uses.
You can do it in C, you just can't do it in the part of C the standards committee has decided to standardize.
I'm not sure what the value is of defining C as standard C when loads of software has shipped for decades using this pattern.