Mi sono imbattuto in una definizione enum: -
typedef enum NSInteger {
kBorderTypeNone = 0,
kBorderTypeLeft = 1 << 0,
kBorderTypeRight = 1 << 1,
kBorderTypeTop = 1 << 2,
kBorderTypeBottom = 1 << 3
} BorderType;
e anche (possibilmente) può essere equivalente a
typedef enum NSInteger {
kBorderTypeNone = 0,
kBorderTypeLeft = 1 ,
kBorderTypeRight = 2,
kBorderTypeTop = 4,
kBorderTypeBottom = 8
} BorderType;
Quali sono le differenze interne (se esistono)? C'è qualche vantaggio l'uno rispetto all'altro? Quale è raccomandato?
Se entrambi sono uguali, come viene gestito dal compilatore? In quale fase del compilatore è ridotto allo stesso insieme di istruzioni?