我想问一个关于objective-C的问题,或者可能是C语言。我想问下面#define
的代码是什么意思?它喜欢声明一个变量吗?目标C中#define的含义是什么?
#define kMountainNameString @"name"
#define kMountainHeightString @"height"
#define kMountainClimbedDateString @"climbedDate"
我想问一个关于objective-C的问题,或者可能是C语言。我想问下面#define
的代码是什么意思?它喜欢声明一个变量吗?目标C中#define的含义是什么?
#define kMountainNameString @"name"
#define kMountainHeightString @"height"
#define kMountainClimbedDateString @"climbedDate"
这是一个简单的文本替换宏。与C,C++中的工作方式相同。
其中kMountainNameString出现,编译器将“粘贴” @“name”。从技术上讲,这发生在编译器之前,被称为预处理器的机制发生。
预处理取代kMountainNameString出现的所有与@“名” 在编译之前就开始了。
#define
是由C继承了预处理指令,采取的形式
#define identifier value
在一般情况下,它被用来告诉预处理器在传递之前,将与给定的文本,以取代identifier
所有实例代码到编译器。也可以定义标识符而不使用值作为编译器标志,以防止对相同变量进行多重定义,或者在执行过程中不会更改的机器细节上进行分支。例如,要根据你的处理器的架构,你可以做这样的事情不同的代码传递给编译:
#ifdef INTEL86
//some 32-bit code
#else
//some 64-bit code
#endif
当这些定义分配值,它往往是一个好主意,围绕用括号中的数值,从而保存它作为一个单元,而不管它存在于上下文的
例如,#define FOO 3 + 7
具有不同的结果#define FOO (3 + 7)
上下面的行的结果,由于算术运算的顺序:
a = 3 * FOO
#定义是在C和C++语言的预处理器指令。
它用于定义文本的预处理器宏。 #define用于在整个文件所在的位置进行替换。
#define <macro-name> <replacement-string>
它,做替代的预处理器。编译器不会看到任何#defines。 – codaddict 2010-07-30 04:19:20
是的,当时(也许还是今天)预处理是由一个单独的独立工具完成的。 – seand 2010-07-30 04:22:22
感谢您的回复。我想问一下这3个元素的数据类型是什么? – Questions 2010-07-30 04:26:08