C语言之预处理
来源:互联网 发布:淘宝下架商品怎么上架 编辑:程序博客网 时间:2024/05/21 06:39
1. 预处理概念
预处理是指程序在编译之前,预处理器对源代码的预处理指令进行处理(例如宏替换), 得到一份新的源代码, 编译器再对新的源代码进行编译, 如图所示:
预处理分为宏定义、文件包含、条件编译。
预处理指令以#开头。
2. 宏定义
宏定义分为不带参数的宏定义和带参数的宏定义
(1) 不带参数的宏定义
格式: #define 宏名 字符串
原理: 在预处理时, 预处理器将源程序中的宏定义的【宏名】全部替换为【字符串】,常用来定义常量
范例:
#define Count 15int main (){ int sum = Count + 30; NSLog(@"sum = %d", sum);}源代码经过预处理(替换)后, 会生成一份新的源代码:
int main (){ int sum = 15 + 30; NSLog(@"sum = %d", sum);}
(2) 带参数的宏定义
格式:#define 宏名(参数列表) 字符串
原理:预处理器会将源代码中的【宏名】替换为【字符串】, 并将字符串中的参数用宏名右边的参数列表进行替换。
范例:
#define sum(a, b) a+bint main (){ int result = sum(10, 20); NSLog(@"%d", result);}经过预处理后的源代码:
int main (){ int result = 10+20; NSLog(@"%d", result);}
(3) 带参数的宏定义与函数有些类似, 但是本质是不同的,带参数的宏定义作用于预处理时, 而函数调用发生在运行时。带参数的宏定义比函数效率更高。
(4) 宏定义的优点:
一、方便程序修改
二、提高程序的效率
3. 文件包含
文件包含的指令是#include, 该指令可以将一个文件的内容全部拷贝到另外一个文件。
(1) #include <文件名>
预处理器会直接到C语言库函数的所在头文件目录中寻找文件, 然后拷贝内容到当前文件
(2) #include "文件名"
预处理器会首先到C语言库函数所在头文件目录中寻找文件,找不到就会到项目中寻找自定义的文件, 然后拷贝内容到当前文件
4. 条件编译
程序中的部分代码在满足一定条件时, 才参与编译
范例:
#define score 71int main (){#if score>90 NSLog(@"成绩大于90");#elif score>80 NSLog(@"成绩大于80");#else NSLog(@"成绩小于等于80");#endif return 0;}经过预处理后的源代码为:
int main (){ NSLog(@"成绩小于等于80"); return 0;}
- c语言之预处理
- C语言之预处理
- C语言之预处理
- C语言之预处理
- C语言之预处理
- C语言之预处理
- C语言之预处理
- C语言之预处理
- C语言学习之预处理
- 8.C语言之预处理
- C语言之预处理命令
- C语言学习之预处理
- c语言之c预处理程序
- iOS开发之--C语言之预处理
- C语言学习笔记之预处理篇
- c语言之宏预处理命令
- C语言预处理命令之条件编译
- C语言预处理命令之条件编译
- Android Context 上下文
- Freemarker遍历Java的Map
- 鸡啄米vc++2010系列27(列表视图控件List Control 上)
- 欢迎使用CSDN-markdown编辑器
- 如何做到大容量硬盘对拷
- C语言之预处理
- MySQL查询对NULL的处理
- 较详细的介绍JNI
- 近3个G的源码分享
- ubuntu-ctags
- Gradle入门系列(2):第一个Java项目
- Hadoop Streaming 编程
- 模板方法模式深度解析
- C++11新特性:Lambda函数(匿名函数)