I have been looking through the original GL quake gaming engine, and it's completely written in C(edit: also x86 asm). There are a lot of #defines, and instead of using the #defines enumerated constants could've been used instead, unless of course enum isn't a part of the C programming language.