C语言 函数 预处理-课件·PPT

合集下载

C语言课件第9章预处理

C语言课件第9章预处理

结果: 结果:
l=25.132740 s=50.265480 v=150.796448
说明: 说明:
(1) 宏名一般用大写字母以区别变量名。 宏名一般用大写字母以区别变量名。 (2) 使用宏名可以减少程序的重复书写和修改。 使用宏名可以减少程序的重复书写和修改。 (3) 宏定义只是简单的替换并不作语法检查。 宏定义只是简单的替换并不作语法检查。 (4) 宏定义不是 语句,不能在后面加分号, 宏定义不是C语句 不能在后面加分号, 语句, 否则连分号一同替换。 否则连分号一同替换。 (5) #define命令出现在函数的外面,在整个函 命令出现在函数的外面, 命令出现在函数的外面 数内有效。 数内有效。 (6) 可以用 可以用#undef命令终止宏定义的作用域。 命令终止宏定义的作用域。 命令终止宏定义的作用域 #define g 9.8 main() : #undef g 终止宏定义g 终止宏定义
#include ”file2.h” : : static a, b, c : :
9.3 条件编译
一般情况下, 一般情况下,编译一个源程序都是所有语 句行都编译(前面所有例子 前面所有例子), 句行都编译 前面所有例子 ,为了需要可以将 满足条件的一部分语句进行编译, 称条件编译。 满足条件的一部分语句进行编译 称条件编译。 条件编译命令的3种形式: 条件编译命令的 种形式: 种形式
系统 角度
与源程序 一同编译 生成执行文件
用户 角度
预编译命令 与源程序 一同编译 生成执行文件
第9章:编译预处理命令 章
C提供的预处理功能有一下三种: 提供的预处理功能有一下三种: 提供的预处理功能有一下三种
1、宏定义 、 2、文件包含 、 3、条件编译 、 全部是以#开头的命令 全部是以 开头的命令

C语言程序设计之程序编译预处理介绍课件

C语言程序设计之程序编译预处理介绍课件
C语言程序设计之程序编译预处理介绍课件
演讲人
01.
02.
03.
04.
目录
编译预处理的概念
编译预处理的指令
编译预处理的应用
编译预处理的注意事项
编译预处理的概念
编译预处理的作用
提高程序的可读性和可维护性
提高程序的编译效率
提高程序的可移植性
提高程序的安全性和健理指令,如#include、#define等
预定义宏:使用预定义宏可以方便地获取系统信息,提高程序的可移植性和适应性。
04
文件包含:使用文件包含可以方便地组织代码,提高程序的模块化和可重用性。
03
条件编译:使用条件编译可以控制代码的编译和运行,提高程序的灵活性和可移植性。
02
宏定义:使用宏定义可以简化代码,提高程序的可读性和可维护性。
01
模块化编程
优点:便于修改和维护代码
缺点:增加了编译时间
缺点:可能导致代码可读性降低
编译预处理的指令
宏定义指令
#define指令:用于定义宏,在编译时进行替换
#undef指令:用于取消宏定义
#ifdef指令:用于判断宏是否定义
#ifndef指令:用于判断宏是否未定义
#else指令:用于定义未定义宏时的处理
#endif指令:用于结束条件编译块
#error指令:用于在编译时输出错误信息
#pragma指令:用于向编译器传递一些信息,如警告信息等
#line指令:用于指定下一行代码的行号
#include指令:用于包含其他头文件
#ifdef:如果定义了指定的宏,则编译后面的代码#ifndef:如果没有定义指定的宏,则编译后面的代码#else:与#ifdef或#ifndef配合使用,表示如果没有满足条件,则编译后面的代码#endif:结束条件编译指令#undef:取消已定义的宏#error:当满足条件时,输出错误信息并停止编译#line:指定下一行代码的行号和文件名#pragma:用于向编译器传递一些特定的信息,如警告信息等

第9章 预处理和标准函数.ppt

第9章 预处理和标准函数.ppt

·(小数点) 分隔域宽和精度。小数点前面可以没有域宽说明
n(正整数)
h l L
指出输出数据的精度。对于e、E和f格式为小数部分位数,对于g或G格式为 有效数字的个数,对于整数为至少应输出的数字个数(添加前导0来满足所需 宽度)
指出输出参数是短整型
指出输出参数是长整型
指出输出参数是高精度浮点型(long double)
2019/11/5
程序设计基础(C语言)wh
7
3. 取消宏名定义 如果需要终止宏的作用域,可以使用#undef命令,取消宏
名定义的形式为: #undef 标识符
要求:标识符应该是已定义过的宏名。 例如: #undef PI 表示在该命令后,PI是一个未定义的标识符,不再表示3.14。
2019/11/5
程序运行如下: 97, 141, 61, a 97, 97 , 0097, +097, 00097
2019/11/5
程序设计基础(C语言)wh
18
9.2.2格式输入函数(scanf) scanf函数的调用形式为:scanf (格式字符串,输入项地址表列); 功能:按格式字符串规定的格式,在键盘上输入各输入项的数 据,并依次赋给各输入项。 scanf函数中的格式字符串的构成与printf函数的基本相同,但 要注意: (1) 空格、制表符将被忽略,其是分隔符。 (2) 非%的普通字符,需要输入同样的字符与之匹配。 (3) 在%与转换字符之间可以有下列选项: *,使对应的输入数据不赋给相应变量; m,指定输入数据宽度; h、l或L,指出参数所指变量类型。
例如:#define OK 1
printf("OK"); 执行时输出的是OK,而不是1。
(4) 宏定义可以嵌套定义。

《函数及预处理》PPT课件_OK

《函数及预处理》PPT课件_OK
printf(“%d\n”, age(5)); }
int age(int n) {
int c; if (n == 1) {
c = 10; } else {
c = age(n-1) + 2; }
return c; 2021/7/28
33
}
(1.5)数组作为函数参 数
2021/7/28
34
数组作为函数参数
4)形参数组也可以不指定大小,在定义数组时在数组
一个函数中可以有一个以上的return语句,执行到哪一
个return语句2,021/哪7/28一个语句起作用。
21
函数的返回值(2/3)
2)返回值的类型。既然函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时 指定函数值的类型。
例如:
int max(float x, float y) char letter(char c1, char c2) double min(int x, int y)
分析:显然,这是一个递归问题:
age(5)=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)=10
可以用式子表述如下:
age(n) =10
(n=1)
age(n) =20a2g1/e7(/n28-1)+2 (n>1)
32
#include <stdio.h> int age(int n); // 前向声明 int main() {
2021819无参数函数定义的一般形式类型标识符函数名变量声明部分函数实现部分类型标识符定义函数的返回值类型若函数不需要返回值则定义为void2021819有参数函数定义的一般形式类型标识符函数名形式参数表列局部变量声明部分函数实现部分例如

《C语言程序设计》2教学课件 第10章 预处理

《C语言程序设计》2教学课件 第10章  预处理

#define MAX (a,b) (a>b)?a:b
/*MAX与(a,b)之间有空格*/
2 对带参数的宏展开,只是将语句中的宏名后面括号内的实参字符串代替#define命令行 中的形参。因此,宏定义时参数应加括号,同时,宏扩展时应使用括号来保护表达式中
低优先级的操作符,以确保达到想要的效果。
— 21 —
#define OK 100 int main() {
printf("OK"); return 0; }
宏名OK表示100,但在printf语句中OK被双引号括起来,因此不作宏代换,在程序中仅 仅把“OK”当作字符串处理。
— 15 —
10.2 宏定义
➢ 10.2.1 无参数宏定义
7 对输出格式作宏定义,可以减少书写麻烦。
① 在带参数宏定义中,形式参数不分配内存 单元,因此不必作类型说明。而宏调用中的实 际参数有具体的值,要用它们去替换形参,因 此必须作类型说明。在函数中,形参和实参是 两个不同的量,各自有自己的作用域,调用时 要把实参值赋给形参,进行“值传递”。而在 带参数的宏中,只是符号替换,不存在值传递 的问题。
第 10 章
预处理
10.1
目录
10.2
CONTENTS
10.3
10.4
概述 宏定义 文件包含 条件编译
PART
10.1 概念
10.1 概述
以预处理运算符“#”开头的命令称为预处理命令。 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的 工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文 件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理 完毕自动进入对源程序的编译阶段。在源程序中,预处理命令都放在函数之外,而 且一般都放在源文件的前面。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档