Objective-C之预处理程序

简介:

预处理指令使用#内标记。

一 : #define语句

用来定义宏。例如定义:

#define TRUE 1

解释 : 定义了一个宏名称为TRUE,并使它的值为1.那么之后TRUE就可以用于程序中所有需要值为1的常量的地方。

测试实例:

在DefineDemo.h中定义宏 : #define TRUE 1 。注意一般将其定义在最上面,如下图(定义在了#import的上面)

01.png

调用的地方:可以在任何地方调用。

①:在DefineDemo.m中调用:

02.png

②:在主程序main.m中调用:

03.png

结果:

04.png

注意 : 宏是只读的


二 : 条件编译之 #ifdef , #endif , #else , #ifndef , #elif

#ifdef : 如果存在编译参数

#ifndef : 如果不存在编译参数

例如:修改了下DefineDeno.m中Print方法的实现,如下:

05.png

我没有定义编译参数AINY , 则会打印Ainy not。结果如下,确实如此:

06.png

那么问题来了,如何定义一个编译参数AINY呢 ??????

在Build Settings中:

07.png

再次运行结果,则是打印TRUE值1

显然 : #ifdef , #ifndef 和Build Settings中的如上图所示的配置是相关的

三 :  #if 是判断常量的

如:

08.png


四 : 编译参数之 #undef : 消除某个编译参数

如 : #undef AINY , 在这句执行后 , 所有#if AINY 及 #if defined(AINY) 都为FALSE

















本文转自Aonaufly51CTO博客,原文链接:http://blog.51cto.com/aonaufly/2049027 ,如需转载请自行联系原作者

相关文章
|
7月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
433 2
|
5月前
|
开发工具 iOS开发 容器
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
iOS Objective-C 应用连接Azure Storage时,若不关闭账号的匿名访问,程序能正常运行。但关闭匿名访问后,上传到容器时会出现错误:“Public access is not permitted”。解决方法是将创建容器时的公共访问类型从`AZSContainerPublicAccessTypeContainer`改为`AZSContainerPublicAccessTypeOff`,以确保通过授权请求访问。
【Azure Blob】关闭Blob 匿名访问,iOS Objective-C SDK连接Storage Account报错
|
7月前
|
缓存 开发工具 iOS开发
优化iOS中Objective-C代码调起支付流程的速度
优化iOS中Objective-C代码调起支付流程的速度
125 2
|
7月前
|
安全 JavaScript 前端开发
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
IOS开发基础知识:介绍一下 Swift 和 Objective-C,它们之间有什么区别?
314 0
|
iOS开发 容器
iOS 代码规范格式 Objective-C(上)
iOS 代码规范格式 Objective-C
440 0
iOS 代码规范格式 Objective-C(上)
|
编译器 API iOS开发
iOS 代码规范格式 Objective-C(下)
iOS 代码规范格式 Objective-C(下)
243 0
|
机器学习/深度学习 API iOS开发
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(一)
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(一)
184 0
|
存储 自然语言处理 Java
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(二)
【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词(二)
257 0
|
存储 安全 C语言
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(一)
【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态(一)
210 0
|
自然语言处理 Go iOS开发
iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?
如果你的公司也正计划跟随 iOS 软件开发,那么你需要作出一个至关重要的决定。你需要为你的产品选择合适的技术组合。你的目标是什么?如果是原生应用开发而不是跨平台软件,你会选用哪种编程语言?久经考验的 Objective-C 还是 Swift?