Кто-либо может объяснить, как @encode работает для извлечения элементов типа данных, существующих в данном объекте, структуре или типе данных в определение типа, которое будет использоваться в качестве дескриптора класса для инстанцирования?
Или возможно указатель на некоторые ресурсы для приобретения знаний о реализации новых директив препроцессору?
Формулировка исходного вопроса могла быть неясной, и я думаю, что мое упоминание о возможной реализации, включающей препроцессор, заставило разговор перейти на тонкости работы компиляторов, а не на предполагаемый вопрос.
Ссылайтесь на этот вопрос, который, я считаю, гораздо более ясен в отношении того, что я пытаюсь изучить: Как мне реализовать что-то похожее на директиву компилятора Objective-C @encode () в ANSI C?
Директива @encode
анализирует предоставленный тип и генерирует константную строку на основе этого типа. Кодировка всех примитивных типов языка C (включая знаковые и беззнаковые версии) и типов Objective-C id
и SEL
имеет односимвольные кодировки, которые можно найти в
. Более сложные типы, такие как struct
ы и массивы, имеют более длинные кодировки.
Более подробную информацию можно найти в Objective-C Runtime Programming Guide [PDF].