2010-07-30 4 views
5

Je veux poser une question sur l'objectif-C ou peut être le C. Je veux demander quelle est la signification du code suivant de #define? Est-ce que c'est comme déclarer une variable?Quelle est la signification du #define dans l'objectif C?

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

Répondre

13

C'est une simple macro de substitution de texte. Fonctionne comme en C, C++.

Lorsque kMountainNameString apparaît, le compilateur va "coller" @ "nom". Techniquement, cela se produit avant le compilateur par un mécanisme appelé le préprocesseur.

+2

C'est le préprocesseur qui effectue la substitution. Le compilateur ne verra aucun #defines. – codaddict

+0

Yep remontent quand (peut-être encore aujourd'hui) le prétraitement a été fait par un outil indépendant séparé. – seand

+0

merci pour toute la réponse. et je veux demander quel est le type de données de ces 3 éléments? – Questions

1

Le préprocesseur remplace toutes les occurences de kMountainNameString avec "nom de" @ avant la compilation commence.

5

#define est une directive préprocesseur héritée de C qui prend la forme

#define identifier value 

En général, il est utilisé pour indiquer au préprocesseur de remplacer toutes les instances de identifier dans le code avec le texte donné avant de le transmettre au compilateur. Les identificateurs peuvent également être définis sans valeurs à utiliser comme indicateurs de compilation pour empêcher la définition multiple des mêmes variables ou pour se connecter aux détails de la machine qui ne changeront pas pendant l'exécution. Par exemple, pour passer un code différent au compilateur basé sur l'architecture de votre processeur, vous pouvez faire quelque chose comme:

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

Lors de l'attribution des valeurs dans ces définitions, il est souvent une bonne idée d'entourer la valeur avec des parenthèses afin de le conserver comme une seule unité, quel que soit le contexte, il existe dans

Par exemple, #define FOO 3 + 7 a un autre résultat que #define FOO (3 + 7) sur le résultat de la ligne suivante, en raison de l'ordre des opérations arithmétiques.

a = 3 * FOO 

Voir this link pour plus de détails sur les directives de préprocesseur en général ou this link pour des informations plus ciblée sur l'objectif C.

0

#define est la directive préprocesseur c et le langage C++.

Il est utilisé pour définir les macros du préprocesseur pour les textes. Le #define est utilisé pour effectuer des substitutions dans le fichier dans lequel il se trouve.

#define <macro-name> <replacement-string> 
Questions connexes