Возможно ли в C объявить значения перечислений из чего-либо, кроме целочисленных литералов?
Нет. перечисления являются константами с типом int.
Просто небольшое дополнение: http://en.wikipedia.org/wiki/Enumerated_type#C_and_syntactically_similar_languages
Любое выражение, состоящее из целочисленных литералов в широком смысле (343, 'a', L'ß '), других enum и sizeof выражений.
enum
sizeof
Я не так уверен, но, возможно, также offsetof выражений.
offsetof