tutorial objective introduccion español apple objective-c xcode c-preprocessor

objective-c - objective - xcode manual pdf



Cómo definir un símbolo de preprocesador en Xcode (7)

Como una adición, si está utilizando esta técnica para definir cadenas en su objetivo, así es como tuve que definirlas y usarlas:

En Configuración de compilación -> Macros de preprocesador, y sí, las barras diagonales inversas son fundamentales en la definición:

APPURL_NSString=/@/"www.foobar.org/"

Y en el código fuente:

objectManager.client.baseURL = APPURL_NSString;

¿Es posible establecer un símbolo para la compilación condicional configurando propiedades en un proyecto de Xcode?

Mi objetivo es crear un símbolo que esté disponible para todos los archivos, sin tener que usar import / include, para que un conjunto de clases comunes pueda tener un comportamiento especial en algunos proyectos. Como el siguiente, pero con mis propios símbolos.

#if TARGET_IPHONE_SIMULATOR ... #endif


En respuesta al comentario de Kevin Laity (ver la respuesta de cdespinosa), sobre la sección de preprocesamiento de GCC que no se muestra en su configuración de compilación, haga que el SDK activo sea el que dice (SDK base) después de él y aparecerá esta sección. Puede hacer esto seleccionando el menú Proyecto> Establecer destino activo> XXX (SDK base). En diferentes versiones de XCode (Base SDK) puede ser diferente, como (Configuración del proyecto o Proyecto predeterminado).

Después de que aparezca esta sección, puede agregar sus definiciones a Macros del procesador en lugar de crear una configuración definida por el usuario.


Está bajo "Preprocesamiento GCC 4.2" (o simplemente coloca "prepro" en el cuadro de búsqueda) ...

... sin embargo, por mi vida no puedo hacer que funcione.

Tengo mis configuraciones estándar de depuración y liberación, y quiero definir DEBUG = 1 en la configuración de depuración. Pero después de agregarlo como un valor:

(en la ventana de configuración)> Macros de preprocesador: DEBUG = 1

#if DEBUG printf("DEBUG is set!"); #endif

... nunca se imprime / se llama. Me esta volviendo loco...


No necesita crear una configuración definida por el usuario. La configuración incorporada "Macros de preprocesador" funciona bien. texto alternativo http://idisk.mac.com/cdespinosa/Public/Picture%204.png

Si tiene varios destinos o proyectos que usan el mismo archivo de prefijo, utilice las Macros de preprocesador que no se utilizan en los encabezados precompilados, de modo que las diferencias en la definición de macro no activen un conjunto adicional innecesario de encabezados precompilados.


Puede duplicar el objetivo que tiene la sección de preprocesamiento, cambiarle el nombre por el nombre que desee y luego cambiar el valor de macro del preprocesador.


Puede usar el archivo *_Prefix.pch para declarar macros de proyecto *_Prefix.pch . Ese archivo generalmente está en tu grupo Otras fuentes .


Vaya a la configuración de su Destino o Proyecto, haga clic en el ícono del engranaje en la esquina inferior izquierda y seleccione "Agregar configuración definida por el usuario". El nuevo nombre de configuración debe ser GCC_PREPROCESSOR_DEFINITIONS , y puede escribir sus definiciones en el campo de la derecha.

Según los comentarios de Steph, la sintaxis completa es:

constant_1=VALUE constant_2=VALUE

Tenga en cuenta que no necesita los ''='' si solo desea # definir un símbolo, en lugar de darle un valor (para #ifdef sentencias #ifdef )