Интересно, возможно ли добавить/добавить другой объект к существующему перечислимому типу (часть платформы)?
Что-то вроде этого: Мы имеем enum
ввести
typedef enum {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;
Теперь я хочу добавить или добавить к этому набору объект как UIModalTransitionStyleCoverVerticalFlipped
. Что-то вроде этого может быть выполнено?
Для этого вам нужно изменить исходное определение типа, включив в него новое значение:
typedef enum {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl,
UIModalTransitionStyleCoverVerticalFlipped
} UIModalTransitionStyle;
В противном случае вы можете рискнуть, что оно не работает, и определить его отдельно:
typedef enum {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;
typedef enum {
UIModalTransitionStyleCoverVerticalFlipped =
UIModalTransitionStylePartialCurl + 1
} ExtendedUIModalTransitionStyle;
Переменная, которая может содержать исходное перечисление, обычно также отлично работает, когда / если вы также присваиваете новое значение (в типичном случае это будет просто int
) - но это не гарантировано. По крайней мере, теоретически реализация может / могла бы назначить достаточно битов для хранения этого перечисления, поэтому добавление дополнительных значений таким образом не сработает. Он также может выполнять проверку диапазона, поэтому присвоение любого значения вне диапазона не допускается. Ни то, ни другое не является обычным явлением, поэтому с практической точки зрения это, вероятно, не проблема, но с теоретической точки зрения ничто на самом деле не гарантирует, что такой код будет работать.