《C语言培训教材第6章ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言培训教材第6章ppt课件.ppt(20页珍藏版)》请在金锄头文库上搜索。
1、第6章编译预处理 1 主要内容 编译预处理多文件程序的调试方法条件编译 2 编译预处理包括 宏定义文件包含条件编译 源文件 c 运行文件 exe 编译 编译 编译 目标文件 obj 连接 编译 连接 连接 6 1编译预处理 3 6 1编译预处理 续 main floatr s c scanf f 如何修改圆周率 4 6 1编译预处理 续 define宏名字符串 宏定义的功能 在进行编译前 用字符串原样替换程序中的宏名 这个替换过程称为 宏替换 或 宏展开 字符串也称为替换文本 命令的一般格式 6 1 1不带参数的宏定义 5 6 1编译预处理 续 例如 definePI3 14main floa
2、tr s c scanf f 替换 3 14 3 14 编译 6 6 1编译预处理 续 为了增加程序的可读性 建议宏名用大写字母 其他的标识符用小写字母 双引号中有与宏名相同的字符串不进行替换 已经定义的宏名可以被后定义的宏名引用 在预处理时将层层进行替换 说明 宏定义的作用域是从定义处开始到源文件结束 但根据需要可用undef命令终止其作用域 形式为 undef宏名 7 例6 1 不带参数的宏定义 源程序 definePI3 14 defineSPI r r defineV4 S r 3main floatr printf nInputr scanf f 编译预处理后的程序 main flo
3、atr printf nInputr scanf f S V S V 8 6 1编译预处理 续 命令的一般形式 6 1 2带参数的宏定义 define宏名 形参表 字符串 功能 在编译预处理时 把源程序中所有带参数的宏名用宏定义中的字符串替换 并且用宏名后圆括号中的实参替换字符串中的形参 例如 defineMAX X Y X Y X Y 9 6 1编译预处理 续 例6 30 带参数的宏定义 defineMAX x y x y x y main printf d n a b MAX a b printf d n MAX a m b n 分两次替换 将宏名MAX a b 替换成字符串 x y x
4、y 用实参a替换形参x 实参b替换形参y 程序中的两个printf语句被展开为 printf d n a b a b printf d n a m b n a m b n 10 6 1编译预处理 续 例6 3 分析下面程序运行后的输出结果 defineMA x x x 1 main inta 1 b 2 printf d n MA 1 a b 分两次替换 MA 1 a b 用x x 1 替换 用1 a b替换x printf语句被展开为 printf d n 1 a b 1 a b 1 特别注意 由于替换文本中的x没有用括号括起 因此 1 a b也不能用括号括起 程序输出结果 8 11 6 1
5、编译预处理 续 命令的一般形式格式1 include格式2 include 文件名 6 1 3文件包含 文件包含是将指定的某个源文件的内容全部包含到当前文件中 用include命令实现 用格式1 预处理程序仅在 TC INCLUDE目录下查找指定文件 用格式2 预处理程序首先在当前目录中查找指定文件 若找不到再到 TC INCLUDE目录中查找 12 6 1编译预处理 续 例如 调用sin x 函数时 要在程序的开头使用如下命令 include在预处理时 用math h文件内容替换 include命令行 2 功能在预处理时 将include命令后指定文件的内容替换该命令行 13 6 2多文件程
6、序的调试方法 操作步骤如下 在TC环境下建立一个工程文件 扩展名为prj 设文件名为test prj 文件内容如下 file1 cfile2 cfiile3 c若这 个文件不在当前盘或当前路径下 需要在文件名前加盘符和路径 如果已经将源文件编译成目标文件 可在工程文件中直接写目标文件名 1 使用工程文件将多个文件连接成一个可执行文件的方法 例如 将file1 c file2 c和file3 c合并成一个可执行文件 14 6 2多文件程序的调试方法 续 在TC主菜单的 Project 下拉菜单中选择 Projectname 项 输入文件名test prj 文件名前也可以加盘符和路径 在TC环境下
7、 按Ctrl F9 系统首先找到工程文件test prj 然后将file1 c file2 c和file3 c分别进行编译 若编译没通过 根据出错信息检查 修改源程序 然后再按Ctrl F9重新编译 若编译通过 系统自动生成三个对应的目标文件 file1 obj file2 obj和fiile3 obj 接着系统自动进行连接 连接成功则生成test exe并自动执行该程序 15 6 2多文件程序的调试方法 续 2 使用文件包含命令将多个文件连接成一个可执行文件的方法 16 6 2多文件程序的调试方法 续 file3 c include file2 c include file3 c file1 c A file2 c B C B C A file1 c 预处理前 预处理后 17 6 3条件编译 实现条件编译的格式有如下三种 格式一 ifdef宏名程序段1 else程序段2 endif 条件编译 是对源程序中的某段程序通过条件来控制是否参加本次编译 18 6 3条件编译 续 格式二 ifndef宏名程序段1 else程序段2 endif 19 6 3条件编译 续 格式三 if条件程序段1 else程序段2 endif 20