Подобно тому, что @Chris Lutz сказал:
В синтаксисе старого C, если вы просто объявили:
enum myEType { ... };
Тогда вам нужно было объявить переменные как:
enum myEType myVariable;
Однако, если вы используете typedef:
typedef enum { ... } myEType;
Тогда вы можете пропустить ключевое слово enum при использовании типа:
myEType myVariable;
C ++ и родственные языки сняли это ограничение, но все еще распространено видеть подобный код либо в чистой среде C, либо когда он написан программистом C.