Это странное определение предназначено для четкого определения ширины в битах и подписи перечисления в коде как в 64-битной, так и в 32-битной среде.Это подробно описано в этом документе Apple , но позвольте мне записать здесь краткую сводку.
Ранее Apple ранее использовала стандартные перечисления typedef, как в
typedef enum { .... } NSEnumTypeName;
до того, как были введены (пере) 64-разрядные универсальные двоичные файлы(Я использовал «re», потому что двоичные файлы FAT были там с дней NeXTStep. В любом случае.)
Однако это делает битовую ширину и подпись typedef-типа NSEnumTypeName
равнымибыть определенным реализацией, как указано в Официальном стандарте , см. 6.7.2.2.4.
Это делает еще более сложным написание кода, который может быть скомпилирован с различными компиляторами и с различным бит-width.
Таким образом, Apple перешла со стандартного перечисления на анонимное перечисление с соответствующим typedef на определенный целочисленный тип со знаком / без знака.