C语言_第13章.ppt
《C语言_第13章.ppt》由会员分享,可在线阅读,更多相关《C语言_第13章.ppt(21页珍藏版)》请在三一文库上搜索。
1、第十三章 编译与预处理,第十三章 编译与预处理,13.1 宏定义 13.2 #include指令 13.3 条件编译 13.4 实战练习,本章学习内容,13.1 宏定义,在C语言的源程序中允许用一个标识符来表示一个字符串,称为“宏” 被定义为“宏”的标识符称为“宏名” 在预处理阶段,对程序中所有出现的“宏名”都用宏定义中的字符串替换,称为“宏替换”或“宏展开” 宏定义是预处理命令的一种,分为不带参数的宏定义和带参数的宏定义,13.1.1 不带参数的宏定义,定义的一般形式: #define 宏名 字符串 其中#表示这是一条预处理命令;#define表示宏定义命令 宏名必须是一个标识符 字符串可以
2、是常数、表达式、格式字符串等,13.1.1 不带参数的宏定义,例如: #define PI 3.1415 使用宏定义的好处是在需要改变一个常量值时,只需要改变#define这一行,整个程序中使用该宏名的地方都会被同步修改,提高程序的灵活性,说明 1. 宏名要简单且意义明确,一般习惯使用大写字母表示 2. 宏定义用宏名表示一个字符串,在宏展开时用该字符串替换宏名 3. 宏定义不属于语句,不能在行末使用分号,13.1.1 不带参数的宏定义,说明 4. 宏定义可以嵌套定义 5. 宏定义必须在函数外,使用#undef终止作用域 6. 程序中若宏名出现在引号中,预处理程序不会进行替换 #define T
3、EST 100 printf(“This is TEST”);,13.1.2 带参数的宏定义,定义的一般形式: #define 宏名(形参表) 字符串 宏调用的一般形式: 宏名(实参表);,例如: #define FUN(y) (y) * (y) + 3 * (y) k = FUN(5); 替换后如下: k = 5 * 5 + 3 * 5;,13.1.2 带参数的宏定义,说明 1. 宏名与形参表之间不能有空格出现 #define MAX(a, b) (a b) ? a : b 若写成: #define MAX (a, b) (a b) ? a : b 将被认为是无参数的宏定义,宏名MAX代表字
4、符串(a, b) (a b) ? a : b;所以宏展开时如下。 宏调用语句:max = MAX(x, y); 将会变成: max = (a, b) (a b) ? a : b(x, y);,13.1 宏定义,2. 在宏定义中形参是标识符,而宏调用中实参可以是表达式,这时字符串中的形参要加上括号,若形参不加括号,那么宏定义中的结果有可能是错误的 #define FUN(a, b) 2 * a + b 宏调用如下: k = FUN(1+2, 3+4); 那么宏替换的结果如下: k = 2 * 1 + 2 + 3 + 4; /*结果为11*/ 本例宏定义的本意是: k = 2 * (1+2) +
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 13
链接地址:https://www.31doc.com/p-4146736.html