¿Qué definiciones existen como __LP64__ y __arm64__ en el cocoa que diferencian las plataforms en time de compilation? ¿Dónde o cómo se definen?

Con la introducción de arm64 como una architecture estándar para la plataforma iphoneos , en algunos casos es necesario implementar condiciones de time de compilation para el código específico de la architecture 64/32.

Si miras a CoreGraphics/CGBase.h y cómo algunos proyectos populares de código abierto están brindando soporte para arm64 , está claro que puedes verificar la presencia del time de ejecución de 64 bits como sigue :

 #if defined(__LP64__) && __LP64__ ... #else ... #endif 

También es posible verificar específicamente para arm64 (en lugar de solo un time de ejecución de 64 bits) como se menciona en esta corrección para erikdoe / ocmock

 #ifdef __arm64__ ... #else .... #endif 

¿Hay una list completa o documentation para este tipo de definiciones? ¿Dónde o cómo se definen?

Esas macros no son específicas de Cocoa, son específicas de CLANG, y pueden aparecer en la línea de command con:

 clang -dM -E -xc /dev/null 

Diferentes versiones de CLANG se envían con diferentes cantidades de indicadores de características que pueden activarse y desactivarse en el momento de configuration o dependiendo de qué plataforma y sistema operativo esté ejecutándose el comstackdor. Se puede encontrar una list bastante completa en sus encabezados de testing con variantes para cada sistema soportado también dispersas en el directory de testings. La documentation para cada uno depende de si la bandera es específica de CLANG o si está definida en una de las bibliotecas estándar a las que se vincula (por ejemplo, __llvm__ está definida por CLANG , pero __WCHAR_WIDTH__ está definida por LibC). Realmente no hay una list completa con documentation definitiva por este motivo. Se permite a diferentes plataforms hacer las cosas de manera ligeramente diferente siempre y cuando se adhieran a las especificaciones del lenguaje.

La mayoría de las interesantes Foundation/NSObjCRuntime.h públicas Objective-C existen en la Fundación cerca de la parte inferior de Foundation/NSObjCRuntime.h .

Puede encontrar útil esta list .

El enlace apunta exactamente a la list de la architecture ifdef, aquí puede encontrar enlaces a otras lists (para compilation y detección de plataforma).