预处理命令不是c语言本身的组成部分,C语言程序设计第9章-预处理命令-v1.0.ppt...

本文详细介绍了C语言的预处理命令,包括宏定义(尤其是带参数的宏定义)和条件编译的概念及应用。通过实例展示了如何使用#define创建宏以及如何利用#ifdef和 ifndef进行条件编译,以实现代码的灵活性和调试便利性。预处理在程序设计中起到简化代码、提高效率的作用,并强调了宏定义并非C语言本身的一部分,需要预处理后再进行编译。
摘要由CSDN通过智能技术生成

C语言程序设计第9章-预处理命令-v1.0

第九章 本章要点 预处理的概念 C语言处理系统的预处理功能 预处理命令的使用 主要内容 9.1 宏定义 9.2“文件包含”处理 9.3 条件编译 基本概念 基本概念 §9.1 宏定义 9.1.2 带参数的宏定义 对带参的宏定义是这样展开置换的: §9.3 条件编译 举例1 #ifdef COMPUTER_A #define INTERGER_SIZE 16 #else #define INTERGER_SIZE 32 #endif 举例2 在调试程序时,常常希望输出一些所需的信息,而在调试完成后就不再输出这些信息,可以在源程序中插入以下的条件编译段: #ifdef DEBUG #printf(“x=%d,y=%d,z=%d\n” ,x,y,z); #endif #ifndef RUN 作业 9.1,9.6,9.10 * ANSI C标准规定可以在C源程序中加入一些“预处理命令” ,以改进程序设计环境,提高编程效率。 这些预处理命令是由ANSI C统一规定的,但是它不是C语言本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理” 经过预处理后程序可由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。 C语言与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。 C提供的预处理功能主要有以下三种:   1.宏定义   2.文件包含   3.条件编译 这些功能分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“#”开头。例如: #define #include 9.1.1 不带参数的宏定义 宏定义一般形式为: #define 标识符 字符串 例如:# define PI 3.1415926 宏定义的作用是在本程序文件中用指定的标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。这种方法使用户能以一个简单的名字代替一个长的字符串. 这个标识符(名字)称为“宏名” 在预编译时将宏名替换成字符串的过程称为“宏展开”。#define是宏定义命令。 #include #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; v=4.0/3*PI*r*r*r; printf("l=%10.4f\ns=%10.4f\nv=%10.4f\n", l,s,v); } 例9.1 使用不带参数的宏定义 input radius: 4↙ 运行情况如下: 1=25.1328 s=50.2655 v=150.7966 (1) 宏名一般习惯用大写字母表示,以便与变量名相区别。但这并非规定,也可用小写字母。 (2) 使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。 (3) 宏定义是用宏名代替一个字符串,只作简单置换,不作正确性检查。只有在编译已被宏展开后的源程序时才会发现语法错误并报错。 说明: (4) 宏定义不是C语句,不必在行末加分号。如果加了分号则会连分号一起进行置换。 (5) #define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define命令写在文件开头,函数之前,作为文件一部分,在此文件范围内有效。 (6) 可以用#undef命令终止宏定义的作用域。 说明: 例如: #define G 9.8 _______ void main() ↑ { G的有效范围 … } -----↓---- #undef G f1() { … } 在f1函数中,G不再代表9.8。这样可以灵活控制宏定义的作用范围。 (7) 在进行宏定义时,可以引用已定义的宏名,可以层层置换。 说明: #include #define R 3.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值