Каков эквивалент EnumSet.allOf() Java на C ?

#c #enum-class

#c #enum-class

Вопрос:

Я пишу простой наивный байесовский классификатор изображений на C . Я хотел бы параметризовать его двумя enum class типами (один для типа входных пикселей, другой для класса изображения). Проблема в том, что часть спецификации требует, чтобы я мог записывать классификатор в файл, поэтому мне нужно иметь возможность получать целочисленные значения всех элементов в рассматриваемых классах enum. Это, конечно, требует от меня получения всех значений из классов enum, о которых идет речь.

На Java я могу написать

 EnumSet.allOf(PixelTypeEnum.class)
  

чтобы получить набор, содержащий каждый элемент класса enum. Есть ли похожая идиома в C ?

Ответ №1:

Нет, такого нет. Это потому, что C не имеет отражения.

Есть несколько подходов, которые вы можете использовать для имитации EnumSet (например, этой FlagSet реализации, которую я использовал, и к которой я добавил тривиальную setAll функцию), но ничего встроенного.