内容正文:
第九章 程序设计优化--预处理
1
CONTENTS
目录
01
02
带参数的宏定义
预处理命令
03
文件包含
04
条件编译
C语言
知识树
My First Template
4、条件编译
C语言程序设计
4
C语言程序设计 条件编译
C语言
什么是文件包含
关于文件包含的几点说明
文件包含的一般形式
My First Template
C语言
本次任务
C语言程序设计—条件编译
采用条件编译,实现给定字符串使之全
改为大写输出,或全改为小写输出。
My First Template
CONTENTS
内容
什么是条件编译
01
条件编译的三种形式
02
任务实现
03
总结
04
7
什么是条件编译
01
C语言程序设计 条件编译
C语言
什么是条件编译
一般情况下,源程序中所有行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,即对一部分内容指定编译的条件,这就是“条件编译”。
条件编译的三种形式
02
C语言程序设计 条件编译
C语言
第一种形式:
#ifdef 标识符
程序段1
#else
程序段2
#endif
说明
作用:当标识符已经被定义过(一般是用 define命
令定义),则对程序段1进行 编译;否则编
译程序段2。
注意:其中#else 程序段2可以没有。
#ifdef 标识符
程序段
#endif
C语言程序设计 条件编译
C语言
第二种形式:
#ifndef 标识符
程序段1
#else
程序段2
#endif
说明
作用:若标识符未被定义,则编译程序段1;否则
编译程序段2。
C语言程序设计 条件编译
C语言
第二种形式:
#include “a.h”
#include “b.h”
#include “x.h”
#ifndef _HEADERNAME_H
#define _HEADERNAME_H
...//(头文件内容)
#endif
符号_HEADERNAME_H按照被包含头文件的文件名进行取名。
以避免由于其他头文件使用相同的符号而引起的冲突。
C语言程序设计 条件编译
C语言
第三种形式:
#if 表达式
程序段1
#else
程序段2
#endif
说明
作用:当指定的表达式值为真(非零)时编译程序段1;否则编译程序段2。
C语言程序设计 条件编译
C语言
第三种形式:
#include "stdio.h"
#define FLAG 0
void main()
{
#if FLAG
{
printf("执行程序段1
");
}
#else
{
printf("执行程序段2
");
}
#endif
}
程序执行取决于FLAG所代表的字符串
输出结果:
任务实现
03
C语言
本次任务
C语言程序设计—条件编译
采用条件编译,实现给定字符串使之全
改为大写输出,或全改为小写输出。
My First Template
C语言程序设计 条件编译
C语言
第一步:字符串替换
编译预处理时,程序按照#define命令行中指定的字符串 从左到右进行置换:area=a*b
实现过程:
#include <stdio.h>
#define LETTER 1
void main()
{ char str[20]="C Language";
char c;
int i=0;
while((c=str[i])!='\0')
{ i++;
#if LETTER
if(c>='a' && c<='z')
c=c-32; //小写转大写
#else
if(c>='A' && c<='Z')
c=c+32; ; //大写转小写
#endif
printf("%c",c);
}
printf("
");
}
算法逻辑 使用
循环处理字符串
输出结果
总 结
04
C语言
C语言程序设计—条件编译
My First Template
1. 宏定义
3. 条件编译
2. 文件包含
C语言
C语言程序设计—条件编译
不带参宏定义
1
2
3
4
My First Template
宏定义的格式 # define 标识符 字符串
使用宏名代替一个字符串,可以减少程序中重复书写某些“字符串”的工作量。
宏定义是用宏名代替字符串,只做简单的置换,不作正确性检查。
宏定义不是C语句,不能在行末加分号,如果加了分号,宏定义会将分号作为“字符串”的一部分。
C语言
C语言程序设计—条件编译
带参宏定义
1
2
3
4
My First Template
定义的一般形式:#define 宏名(形参表)字符串
调用的一般形式:宏名(实参表)
在宏定义中,宏名与左括号间不能有空格,否则将会把宏名后的所有数据都当做字符串的一部分。
带参宏定义的置换过程:1、字符串替换 2、参数代换
C语言
C语言程序设计—条件编译
文件包含
1
2
3
4
My First Template
文件包含是指一个源程序文件将另外一个源文件的全部内容包含进来
一般形式:#include <文件名> 或 #include “文件名”
一个include 命令只能指定一个被包含的文件,如果要包含n个文件,要用n个include 命令。
在一个被包含文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的。
C语言
C语言程序设计—条件编译
条件编译
1
2
3
My First Template
一般情况下,源程序中所有代码都参加编译,但是有时希望对其中一部分内容在
满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是条件编译。
条件编译命令的作用是实现对源程序有选择的编译。
条件编译的三种形式
$$