Поместите их в заголовок, чтобы все файлы, которым они нужны, могли получить доступ к заголовку и использовать объявления из него.
При компиляции с параметрами:
$ /usr/bin/gcc -g -std=c99 -Wall -Wextra -c enum.c
$
GCC 4.2.1 (в MacOS X 10.7.1) принимает следующий код:
enum xyz;
struct qqq { enum xyz *p; };
enum xyz { abc, def, ghi, jkl };
Добавить -pedantic
и предупреждает:
$ /usr/bin/gcc -g -std=c99 -Wall -Wextra -pedantic -c enum.c
enum.c:1: warning: ISO C forbids forward references to ‘enum’ types
enum.c:5: warning: ISO C forbids forward references to ‘enum’ types
$
Таким образом, вы не должны пытаться использовать предварительные объявления перечислимых типов в C; GCC допускает это как расширение, когда не вынужден быть педантичным.