第七章编译预处理(C语言程序设计清华版第三版)..ppt

第七章编译预处理(C语言程序设计清华版第三版)..ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
运行结果? 7.1.2带参数宏和函数的区别 例7.1.2:比较下面的宏扩展和函数调用。 # include stdio.h # define CUBE(x) ((x)*(x)*(x)) int cube(int x) { return x*x*x ;} void main() { int a=2,b; b=CUBE(a++); printf(%d\n,b); b=CUBE(a); printf(%d\n,b); 运行结果: 8 125 8 27 a=2; b=cube(a++); printf(%d\n,b); b=cube(a); printf(%d\n,b); } 如果在文件中不再使用某个在前面的文件首部已经定义的宏,可以取消该宏定义,语法形式为: #undef 宏名 使用#undef的主要目的是把宏名局部化,即把宏名的作用域局限于需要它的代码中; 宏可以重新定义,但在重新定义之前,应该用#undef命令把原来的定义取消,否则重新定义宏时系统会提出警告。 #define BLOCK_SIZE 512 //定义宏 … #undef BLOCK_SIZE //取消宏 #define BLOCK_SIZE 128 //重新定义宏 … 7.1.3 取消宏定义 #define 可在文件首或函数定义的内部 #define 宏名:宏名从命令开始至文件结束处有效 文件包含是指,一个源文件可以将另一个源文件的内容全部包含进来,即把另一个文件插入到本文件中。 C程序通常分成多个模块由多个程序员合作编写。对于程序中公用的符号常量定义、类型定义、外部变量声明、函数原型声明和宏定义等,组成共用的源文件,该文件称为“标题文件”或“头文件”,扩展名为.h。 一般头文件不包含变量定义和函数定义。 当需要修改这些公用量时,只需要修改这个公用文件即可。 7.2 文件包含 文件包含操作由预处理命令#include实现,它指示预处理程序将指定文件的全部内容插到#include命令所在的位置。 命令格式为: #include文件名 或 #include”文件名” 文件名必须是一个完整的文件名(扩展名不可省略),可以包含路径,例如: #include “c:\mydir\prog.cpp” 7.2 文件包含 //指示预处理程序到Include文件夹中去查找所指定的文件,如果找不到指定文件,则显示出错信息; //指示预处理程序先到当前用户文件夹中查找,如果没有找到,再到Include文件夹中去查找,如果还找不到,则显示出错信息。 7.2 文件包含 A B #include “file2.cpp” file1.cpp file2.cpp C A B 编译器看到的文件 C 图7.3.1 #include 命令处理示意图 练习:P199选择題10 通常为了程序设计和调试,将一个大的程序分成多个源文件存储,每个源文件包含一个或多个函数(一个函数不能存储在两个文件中)。 当一个程序由多个源文件组成时,某源文件中定义的标识符(如全局变量名、函数名等)能否被其他源文件中的函数访问,取决于该标识符的连接属性。连接属性有两种:内部连接和外部连接。 内部连接 外部连接 多文件组织 内部连接也称为静态连接,如果一个标识符(全局变量或函数)具有内部连接属性,那么它只能被本文件中的函数调用。这样的标识符称为文件级标识符。 定义一个标识符的内部连接属性的方法是:在标识符前面用关键字static修饰,即:static 标识符 内部连接 //File1.cpp static int iMax(int x, int y) { return xy?x:y ; } //File2.cpp void main() { int M; int iMax(int,int); M=iMax(6,2); } 例7.4.1:内部函数的非法调用示例。 说明:由于static修饰,File2.cpp中的不能调用File1.cpp的iMax()函数。 具有外部连接属性的标识符可以在其他文件中经过声明后被访问。 定义一个标识符的外部连接属性的方法是:在名字前面用关键字extern修饰,即:extern 标识符 外部连接属性是C语言默认的属性,在定义全局变量或函数时,如果省略连接属性定义,则隐含具有外部连接属性。具有外部连接属性的标识符是程序级的,即在程序的任何文件中都可调用它。 外部连接 //File3.cpp extern int eMax(int x, int y) // extern可以省略 { return xy?x:y ; } //File4.cpp void main() { int M; extern int eMax(

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档