2010-07-30 27 views
5

Quiero hacer una pregunta sobre el objetivo-C o puede ser el C idioma. Quiero preguntar cuál es el significado del siguiente código de #define? ¿Es como declarar una variable?¿Cuál es el significado de #define en el objetivo C?

#define kMountainNameString   @"name" 
#define kMountainHeightString   @"height" 
#define kMountainClimbedDateString  @"climbedDate" 

Respuesta

13

Es una simple macro de sustitución de texto. Funciona igual que en C, C++.

Donde aparece kMountainNameString el compilador "pegará" en @ "name". Técnicamente hablando, esto ocurre antes del compilador mediante un mecanismo llamado preprocesador.

+2

Es el preprocesador que realiza la sustitución. El compilador no verá ningún #defines. – codaddict

+0

Hace mucho tiempo cuando (tal vez todavía hoy) el preprocesamiento se realizaba mediante una herramienta independiente independiente. – seand

+0

gracias por toda la respuesta. y quiero preguntar ¿cuál es el tipo de datos de esos 3 elementos? – Questions

1

El preprocesador reemplaza todas las ocurrencias de kMountainNameString con @ "nombre" antes de que comience la compilación.

5

#define es una directiva de preprocesador heredado de C que toma la forma

#define identifier value 

En general, se utiliza para indicar al preprocesador para reemplazar todas las instancias de identifier en el código con el texto dado antes de pasarlo al compilador Los identificadores también se pueden definir sin valores que se utilizarán como indicadores del compilador para evitar definiciones múltiples de las mismas variables, o para bifurcar detalles de la máquina que no cambiarán durante la ejecución. Por ejemplo, para pasar de código diferente al compilador basado en la arquitectura de su procesador que podría hacer algo como:

#ifdef INTEL86 
//some 32-bit code 
#else 
//some 64-bit code 
#endif 

Cuando la asignación de valores en estas definiciones, a menudo es una buena idea para rodear el valor entre paréntesis con el fin de para preservarla como una unidad, independientemente del contexto que existe en

Por ejemplo, #define FOO 3 + 7 tiene un resultado diferente que #define FOO (3 + 7) en el resultado de la línea siguiente, debido a la orden de las operaciones aritméticas:.

a = 3 * FOO 

Ver this link para más detalles sobre las directivas de preprocesador en general o this link para obtener información más centrado en Objective C.

0

#define es la directiva de preprocesador en C y lenguaje C++.

Se utiliza para definir las macros del preprocesador para los textos. El #define se utiliza para hacer sustituciones en todo el archivo en el que se encuentra.

#define <macro-name> <replacement-string> 
Cuestiones relacionadas