C开发系列-预处理指令
2024-08-27 17:45:19
简介
OC程序执行过程,在源代码编译成0跟1的二进制文件之前。执行的指令称之为预处理指令。
所有的预处理指令都是以#开头。#import也是预处理指令。预处理指令主要分为三种
预处理指令是有的作用域的:从编写指令的那一行开始,一直到文件的结尾。
宏定义
宏定义分为
不带参数
预处理指令#define,不带参数的宏定义可以用来定义一个常量。
#import <Foundation/Foundation.h>
#define COUNT 6
int main(int argc, const char * argv[]) {
for (int i=0; i<COUNT; i++) {
NSLog(@"----------------");
}
return 0;
}
宏名一般用大写或者以k开头,变量名一般用小写
带参数
带参数的宏可以用来定义一些简单的固定的代码。
#import <Foundation/Foundation.h>
#define SUM(num1, num2) ((num1)+(num2))
int main(int argc, const char * argv[]) {
int ret = SUM(2, 3);
return 0;
}
注意宏定义只是替换代码,在带有参数的宏定义为了严谨应该在参数加上括号。
条件编译
在很多情况下,我们希望程序中的一部分代码只在满足一定条件下才进行编译,否则不参与编译,这就是条件编译
。
基本用法
#if 条件1
...coder1...
#elif 条件2
...coder2...
#else
...coder3...
#endif
其他用法
- 如果通过判断是否定义了某个宏来来决定是否参与编译;
#if defined(宏)
...code...
#endif
条件取反的写法:如果前面没有定义指定的宏,就将代码编译进去。
#if !defined(宏)
...code...
#endif
#ifdef
和#ifndef
的使用与上面基本一致
#ifdef MAX
...code...
#endif
#ifndef MAX
...code...
#endif
最新文章
- yum使用点滴
- PAT A 1018. Public Bike Management (30)【最短路径】
- Java多线程开发系列之四:玩转多线程(线程的控制1)
- ASM磁盘组空间不足--ORA-15041:DISGROUP DATA space exhausted (生产库案例)
- Java同步块
- 【HDOJ】3221 Brute-force Algorithm
- 如何做好PPT?
- NEXT | 不错过任何一个新产品
- Google Chrome调试js代码
- 【C++】浅谈三大特性之一继承(一)
- CCIE-MPLS VPN-实验手册(下卷)
- SD详解-销售过程
- Java回调机制总结
- 关于 Docker Hub 上不能注册 Docker ID 的问题
- 洛谷P2045 方格取数加强版(费用流)
- 【Python】新建自定义个数的自定义长度名字
- 【转载】高可用的MongoDB集群详解
- 【CF617D】Roads in Yusland
- Codeforces 911D. Inversion Counting (数学、思维)
- SM2
热门文章
- Git 获取项目git clone
- PHP Catchable fatal error: Argument 2 passed to Illuminate\Routing\UrlGenerator::__construct()
- (依赖注入框架:Ninject ) 一 手写依赖注入
- [JZOJ3347] 【NOI2013模拟】树的难题
- xkl的各种沙雕低错
- Oracle连接字符串总结
- C++——多态
- ros-slam的链接
- (2)python tkinter-按钮.标签.文本框、输入框
- Mysql优化系列之查询性能优化前篇3(必须知道的几个事实)