Если я хочу реализовать следующий код, будут ли уместны перечисления?
Не вдаваясь в подробности об альтернативах - Да.
как быЯ собираюсь инициализировать перечисление?
Я обычно объявляю перечисление в C примерно так:
typedef enum MONDayOfWeek {
MONDayOfWeek_Undefined = 0,
MONDayOfWeek_Monday,
MONDayOfWeek_Tuesday,
MONDayOfWeek_Wednesday,
MONDayOfWeek_Thursday,
MONDayOfWeek_Friday,
MONDayOfWeek_Saturday,
MONDayOfWeek_Sunday
} MONDayOfWeek;
// in use:
MONDayOfWeek day = MONDayOfWeek_Monday;
MON
будет префиксом вашей библиотеки или организации.DayOfWeek
будет именем enum в библиотеке, тогда значения будут добавлены.
Хотя это многословно, вы склонны избегать столкновений довольно хорошо.
Будет ли оно идти взаголовок или файл реализации?
В заголовке, если вы хотите использовать его несколькими файлами, иначе в файле реализации.