内容正文:
第九章 程序设计优化--预处理
1
CONTENTS
目录
01
02
带参数的宏定义
预处理命令
03
文件包含
04
条件编译
C语言
知识树
My First Template
1、预处理命令
C语言程序设计
4
CONTENTS
内容
预处理的概念
01
预处理命令
02
不带参数的宏定义
03
5
预处理的概念
01
C语言程序设计 预处理命令
C语言
预处理的概念
包含命令 #include <stdio.h>
宏定义命令 #define PI 3.1415926
为了与一般C语句相区别,这些命令以符号“#”开头。
My First Template
C语言程序设计 预处理命令
C语言
预处理的概念
在源程序中这些命令都放在函数之外,一般都放在源程序的前
面,我们称为预处理部分
C语言与其他语言的重要区别:就是C语言中可使用预处理命令
My First Template
预处理命令
02
C语言程序设计 预处理命令
C语言
预处理命令
宏定义
文件包含
条件编译
不带参数的宏定义、带参数的宏定义
My First Template
不带参数的宏定义
03
C语言
C语言程序设计 预处理命令
不带参数的宏定义
一个很长的字符在程序中
多次输入,怎么办?
My First Template
C语言程序设计 预处理命令
C语言
不带参数的宏定义
不带参数的宏定义的格式
#define 标识符 字符串
说明
“#”:凡是以“#”开头的均为预处理命令
define:宏定义命令
标识符:又称为宏名,尽量为大写字母
字符串:一般为常数、关键字、语句、表达式
宏定义作用 :用指定的标识符代替一个字符串
作用:指定标识符PI来代替数3.1415926
例:#define PI 3.1415926
C语言程序设计 预处理命令
C语言
#include <stdio.h>
void main()
{float l,s,r,v;
printf("input radius:");
scanf("%f",&r);
l=2.0*3.1415926*r;
s=3.1415926*r*r;
printf("l=%10.4f
s=%10.4f
",l,s);
}
#include <stdio.h>
#define PI 3.1415926
void main()
{float l,s,r,v;
printf("input radius:");
scanf("%f",&r);
l=2.0*PI*r;
s=PI*r*r;
printf("l=%10.4f
s=%10.4f
",l,s);
}
预处理
例:
C语言程序设计 预处理命令
C语言
以下几点说明
1、宏名一般习惯用大写字母表示,以便与变量名相区别。但这并非规
定,也可用小写字母。
2、宏定义是用宏名代替一个字符串,只作简单置换,不作正确性检查。
例:#define PI 2.71828
C语言程序设计 预处理命令
C语言
3、使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。
4、宏定义不是C语句,不必在行末加分号。如果加了分号则会连分号一起进
行置换。
例: #define PI 3.1415926;
area = PI * r * r;
当宏定义被替换后变成
area = 3.1415926; * r * r;
C语言程序设计 预处理命令
C语言
5、宏定义必须写在函数之外,其作用域为宏命令起到源程序结束。如要终止
其作用域可使用#undef命令
f1函数中G不再代表9.8。这样可以灵活控制宏定义的作用范围
G的有效范围
#define G 9.8
void main()
{
…
}
#undef G
f1()
{
…
}
C语言程序设计 预处理命令
C语言
6、宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开
时由预处理程序层层代换。
#include <stdio.h>
#define R 3.0
#define PI 3.1415926
#define L 2*PI*R
#define S PI*R*R
void main()
{printf("L=%f
S=%f
",L,S);
}
经过宏展开后,printf函数中的输出项L被展开为: 2*3.1415926*3.0
C语言程序设计 预处理命令
C语言
7、“输出格式”作宏定义,可以减少书写麻烦。
#include "stdio.h"
#define P printf
#define D "%d
"
#define F "%f
"
void main()
{
int a=5, c=8, e=11;
float b=3.8, d=9.7, f=21.08;
P(D F,a,b);
P(D F,c,d);
P(D F,e,f);
}
总结
1. 预处理的概念
3、不带参数的宏定义
2. 预处理命令
$$