Я читал где-нибудь о предоставлении значений по умолчанию перечислений как так:
typedef enum {
MarketNavigationTypeNone = 0,
MarketNavigationTypeHeirachy = 1,
MarketNavigationTypeMarket = 2
} MarketNavigationLevelType;
.. но я не могу помнить значение выполнения этого. Если я не даю им значения по умолчанию - и затем кто-то позже переупорядочивает перечисление - каковы риски?
Если я всегда использую перечислимое имя и даже не обращаюсь к ним их целочисленным значением, есть ли какие-либо риски?
Единственная возможная проблема, о которой я могу думать, состоит в том, если я инициализирую перечисление от международного значения от DB - и перечисление переупорядочивается - затем, приложение повредилось бы.
Как правило, это имеет значение только в том случае, если перечисление доступно какому-либо внешнему API или будет использоваться для обмена данными через файлы данных или другими способами. . Если перечисление используется только в вашем приложении и нигде больше, то фактические значения не имеют значения.
Это не значения по умолчанию, вы даете им значения, которые они всегда будут иметь.
Если вы не инициализируете их явно, значение первого перечислителя равно нулю. Для всех остальных, если нет инициализатора, их значение равно значению предыдущего перечислителя, увеличенному на единицу.
Есть две причины для придания им явных значений:
Если вы всегда ссылаетесь на них по их имени и никогда явно не используете интегральное значение для сравнения или присваивания, явное придание им значения не требуется.