#ifdef __OBJC__宏定义的作用】的更多相关文章

创建pch文件如下: 添加文件Tableview-Prefix.pch 内容如下: #import <Availability.h> #ifndef __IPHONE_3_0 #warning "This project uses features only available in iOS SDK 3.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundat…
有空试试 表示宏内引用的文件确保只被使用Objective-C语言的文件所引用,保证引用关系的清晰.…
1.__OBJC__宏定义作用 在.pch 文件中一般都会自动加上这句宏定义,表示宏内引用的文件确保只被使用Objective-C语言的文件所引用,保证引用关系的清晰.因为在一个OC工程中,可能包含.m..mm..c..cpp四类编译文件,这四类文件均会引用.pch预编译头.在编译.c..cpp时,因为语法不兼容OC,所以预编译头中不能包含objc代码.因为.pch是2类源文件共用的,所以在pch中,oc头文件要用__OBJC__包含起来. 2.下面是一些常用于打印日志的宏. 宏 说明 __fu…
宏简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 所有的预处理指令都是以#开头,并且结尾不用分号 2.预处理指令分3种 1> 宏定义 2> 条件编译 3> 文件包含 3.预处理指令在代码翻译成0和1之前执行 4.预处理的位置是随便写的 5.预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾,可以用#undef取消宏定义的作用 6.宏名一般用大…
多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面.例如:头文件的作用.头文件的内容:链接的作用和意义:条件编译的作用等等此类问题,接下来将c工程开发过程中的各种问题进行总结使大家能够自如应对这方面的面试题目. c工程开发经过以下几个阶段:           编辑-->预处理-->编译-->汇编-->链接-->运行-->调试 预处理阶段通常要完成三件事情,用头文件内容替…
__init.__initdata和__exit.__exitdata的定义位于<kernel/include/linux/init.h> /* These are for everybody (although not all archs will actually discard it in modules) */ #define __init __section(.init.text) __cold notrace #define __initdata __section(.init.d…
本文转载自:http://my.oschina.net/shelllife/blog/123202 在宏定义中#和##的作用是:前者将宏定义的变量转化为字符串:后者将其前后的两个宏定义中的两个变量无缝拼接在一起转化为字符串. 1.   #: 在宏定义中,将其后的变量,转化为字符串. eg:  #define  str(s)      #s 输出: helloworld , 就可以通过这样的的调用, printf( str(helloworld) ); 2. ## : 在宏定义中,将其前后的两个变…
如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍.然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间.在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义.下面就是一个例子: #define __set_task_state(tsk, state_value) \ do { (tsk)->state = (state_value); } while (0) 在Linux内核和其它一些著名的C库中有许多使用do{...…
如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍.然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间.在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义.下面就是一个例子: #define __set_task_state(tsk, state_value) \ ) 在Linux内核和其它一些著名的C库中有许多使用do{...}while(0)的宏定义.这种宏的用途是什么?有什么好处? Google的Robert…
#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号. #define example(instr) printf("the input string is:\t%s\n",#instr) #define example1(instr) #instr 当使用该宏定义时: example(abc); 在编译时将会展开成:printf("the input string is:\t%s\n&…