iOS APP 开发 OC 第十六天,预处理

iOS APP 开发 OC 第十六天,预处理

tags: OC 30 day


因为在study的时候,看到这一段code,所以纪录一下,不过预处理跟OC的语法不是很有关连,各位就见谅啦。

什么是预处理?

预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。

使用预处理有什么好处?

经过处理后的代码,将会变的很精短。

预处理的编码

基础的常用语法,接下来我们会利用这些语法做很多运用。

#define  //定义一个预先宏#undef   //取消宏的定义#if      //编译初步中的条件命令,相当于C语法中的if语句#ifdef   //判断某个宏是否被定义(#define过),若已定义,执行后续的语句#ifndef  //与#ifdef相反,判断某些宏是否正确定义#elif    //若#if,#ifdef,#ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if#else    //与#if,#ifdef,#ifndef对应,若这些条件不满足,则执行#else之后的语句,相当于C语法中的else#endif   //#if,#ifdef,#ifndef这些条件命令的结束标誌。#defined   //与#if,#elif配合使用,判断某些宏是否被定义#pragma  //说明编译器信息#warning //显示编译警告信息#error   //显示编译错误信息

配置DEBUG

在实务上,常常需要对开发和正式环境设定不同的参数,比方 API 的 URL、需不需要印 Log 等等。虽然说,这些事情可以手动调整,但是人非圣贤,难免会有失手的时侯。透过 Xcode 的 Macros(巨集)、Custom Flags 的定义,可以轻鬆帮我们避免诸如此类的问题发生。

1.在 "Target > Build Settings > Preprocessor Macros > Debug" 设置"DEBUG=1”。2.之后在pch或工具类中就可以这么写了:#ifdef DEBUG  (debug 模式下的配置)#else  (release 模式下的配置)#endif #ifdef DEBUG //调试状态,:LOG功能#define SFString [NSString stringWithFormat:@“%s”,__FILE __]。lastPathComponent//打印出所在文件名,所在行,可选地址#define SFLog(...)printf(“%s:%p(line =%d):%s \ n \ n”,[SFString UTF8String],&self,__LINE__,[[NSString stringWithFormat:__ VA_ARGS__] UTF8String]) ;//#else//#define SFLog(s, ...) NSLog(@"<%@: %p (line = %d)> %@", self.class, self, __LINE__,[NSString stringWithFormat:(s),##__VA_ARGS__])//#endif#else // 发布状态, 关闭LOG功能#define SFLog(s, ...)#endif系统宏介绍: __LINE__:宏在预编译时会替换成当前的行号 __FUNCTION__:宏在预编译时会替换成当前的函数名称__VA_ARGS__:简单的说,就是将左边…的内容替换进来

资料来源

简书
法兰克的iOS世界


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章