Как директива компилятора @encode реализована в Objective-C?
-
20-09-2019 - |
Вопрос
Кто-нибудь может объяснить, как работает @encode для извлечения элементов типа данных, присутствующих в данном объекте, структуре или типе данных, в определение типа, которое будет использоваться в качестве дескриптора класса для создания экземпляра?
Или, может быть, указатель на некоторые ресурсы для изучения реализации новых директив препроцессора?
Решение 2
Формулировка исходного вопроса, возможно, была неясной, и я думаю, что мое упоминание о возможной реализации с участием препроцессора заставило разговор переключиться на тонкости работы компиляторов, а не на предполагаемый вопрос.
Пожалуйста, обратитесь к этому вопросу, который, я считаю, гораздо более ясен относительно того, что я пытаюсь узнать:Как бы я реализовал что-то похожее на директиву компилятора Objective-C @encode() в ANSI C?
Другие советы
В @encode
директива анализирует предоставленный тип и генерирует постоянную строку на основе этого типа.Кодирование всех примитивных типов C (включая подписанные и неподписанные версии) и Objective-C id
и SEL
все типы имеют односимвольные кодировки, их можно найти в <objc/runtime.h>
.Более сложные типы , такие как struct
s и массивы имеют большие кодировки.
Более подробная информация доступна в Руководство по программированию во время выполнения Objective-C [PDF].