Область самого перечисления в Objective-C?
Рассмотрим следующий код:
enum TableSections {
kSection1 = 0,
kSection2 = 1,
};
Какова область действия идентификатора TableSections
? Если этот код находится в файле реализации, TableSections
определяется только внутри этой единицы компиляции, определяется глобально или что-то еще?
И является ли ответ специфичным для Objective-C (llvm, clang и т. Д.) Или общим для всего C99 или более крупного набора?
1 ответ
Перечисления являются C, поэтому мы не говорим ни о чем специфичном для Objective-C.
Перечисления не участвуют в связывании. Они просто символические константы. Они определены везде, где они видны / доступны. Если это единица компиляции, тогда enum может использоваться только внутри этой единицы компиляции (но не потому, что static
локальный или что-то еще - просто потому, что компилятор должен видеть источник (текстовое определение), чтобы иметь возможность расширять члены перечисления.