Comment est la directive du compilateur @encode mis en œuvre en Objective-C?
-
20-09-2019 - |
Question
Quelqu'un peut-il expliquer comment fonctionne @encode pour extraire les éléments de type de données présents dans un objet donné, struct ou dans une définition type de données de type à être utilisé comme un descripteur de classe pour instanciation?
Ou peut-être un pointeur vers des ressources pour l'apprentissage de la mise en œuvre des nouvelles directives de préprocesseur?
La solution 2
Le phrasé de la question initiale peut-être pas clair et je pense que mon mentionner d'une éventuelle mise en œuvre impliquant le préprocesseur a provoqué la conversation se tourner vers les subtilités de la façon dont les compilateurs travaillent plutôt que la question prévue.
S'il vous plaît référence à cette question, que je crois est beaucoup plus clair quant à ce que je suis en train d'apprendre: Comment puis-je mettre en œuvre quelque chose de similaire à la directive du compilateur @encode Objective-C () dans la norme ANSI C?
Autres conseils
La directive @encode
analyse le type prévu et génère une constante de chaîne sur la base de ce type. Le codage de tous les types primitifs C (y compris signés et non signés versions) et le id
Objective-C et les types de SEL
ont tous encodages un seul caractère, ceux-ci se trouve dans <objc/runtime.h>
. types plus complexes tels que struct
s et les tableaux ont des codages plus grandes.
Plus d'informations sont disponibles dans les Objective-C Runtime Guide de programmation [PDF].