黑马程序员——day02、c语言知识整合(三)
来源:互联网 发布:淘宝毛菇小象 编辑:程序博客网 时间:2024/04/29 22:44
预处理指令
1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译
2.为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号
3.预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件
4.C语言提供的预处理指令主要有:宏定义、文件包含、条件编译
一、宏定义
宏定义可以分为2种:不带参数的宏定义 和 带参数的宏定义。
不带参数的宏定义
#define宏名 字符串
比如#define ABC 10
右边的字符串也可以省略,比如#define ABC
它的作用是在编译预处理时,将源程序中所有"宏名"替换成右边的"字符串",常用来定义常量。
#include <stdio.h>// 源程序中所有的宏名PI在编译预处理的时候都会被3.14所代替#define PI 3.14// 根据圆的半径计radius算周长float girth(float radius) { return 2 * PI *radius;}int main (){ float g = girth(2); printf("周长为:%f", g); return 0;}
使用习惯与注意
1> 宏名一般用大写字母,以便与变量名区别开来,但用小写也没有语法错误
2> 对程序中用双引号扩起来的字符串内的字符,不进行宏的替换操作。3> 在编译预处理用字符串替换宏名时,不作语法检查,只是简单的字符串替换。只有在编译的时候才对已经展开宏名的源程序进行语法检查
4> 宏名的有效范围是从定义位置到文件结束。如果需要终止宏定义的作用域,可以用#undef命令
5> 定义一个宏时可以引用已经定义的宏名
#define R 3.0#define PI 3.14#define L 2*PI*R#define S PI*R*R
带参数的宏定义
#define 宏名(参数列表) 字符串在编译预处理时,将源程序中所有宏名替换成字符串,并且将 字符串中的参数 用 宏名右边参数列表 中的参数替换
使用注意
1> 宏名和参数列表之间不能有空格,否则空格后面的所有字符串都作为替换的字符串2>带参数的宏在展开时,只作简单的字符和参数的替换,不进行任何计算操作。所以在定义宏时,一般用一个小括号括住字符串的参数。
下面定义一个宏D(a),作用是返回a的2倍数值:
- 如果定义宏的时候不用小括号括住参数
#include <stdio.h>#define D(a) 2*aint main (){ int b = D(3+4); printf("%d", b); return 0;}被替换成int b = 2*3+4;,输出结果:
- 如果定义宏的时候用小括号括住参数,把上面改成:
#define D(a) 2*(a)
注意右边的a是有括号的,将被替换成int b = 2*(3+4);,输出结果:
0 0
- 黑马程序员——day02、c语言知识整合(三)
- 黑马程序员——day02、c语言知识整合(二)
- 黑马程序员——day01、c语言知识整合(一)
- 黑马程序员——Day02之Java语言基础组成(一)
- 黑马程序员——C语言的初步知识
- 黑马程序员——C语言知识的总结
- 黑马程序员—C语言结构体知识梳理
- 黑马程序员——C语言基础(三)基本运算
- 黑马程序员——Objective-C语言知识整理——Objective-C语言基础知识总结
- 黑马程序员——Objective-C语言知识整理——构造方法相关知识总结
- 黑马程序员---C语言知识总结(上)
- 黑马程序员---C语言知识总结(下)
- 黑马程序员--C语言知识汇总
- Day02——C语言函数
- 黑马程序员-----c语言基础与重点第一篇——C知识基础
- ——黑马程序员——C语言中程序结构(三)
- ——黑马程序员——C语言中的数组(三)
- 黑马程序员——【C语言】判断一个整形变量的奇偶性(三种方式)
- C++ 动态数组
- MSI安装包的修改经历
- Windows Store的媒体基础API
- MSI安装程序中的文件替换
- poj 2031 Building a Space Station 最小生成树
- 黑马程序员——day02、c语言知识整合(三)
- poj 1789 Truck History 最小生成树
- 风雨20年:我所积累的20条编程经验
- 耻辱
- Android推送方案分析(MQTT/XMPP/GCM)
- IOS Object-C 异步Http请求
- IOS创建文件
- Altium Designer Summer 9 Build 9.4.0.20159下载地址 + 破解补丁
- poj 2349 Arctic Network 并查集 连通分支数,二分答案