- 1、本文档共51页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 除包含系统文件外,也可将用户定义的宏保存在用户文件中,在源程序需要宏的时候,将用户文件包含在源文件中。如案例二中,将宏定义g和F定义于user.h文件中。 使用文件包含,需注意以下几点: (1) 若使用符号?,系统到存放C库函数头文件所在目录寻找要包含的文件,一般使用库函数使用此符号;若使用符号,系统在用户程序所在的当前目录寻找要包含的文件,如果找不到再到C库函数头文件所在目录寻找,一般使用用户函数使用此符号。 (2) 在预处理时,文件包含命令用被包含文件内容替换,成为源文件内容的一部分,与其他源文件代码一起参加编译。例如案例二中使用#include将stdio.h的所有内容,与user.h包含宏定义的文件内容嵌入到该预处理命令处成为源文件的一部分。 (3) 可以将多个需要包含的内容写到一个头文件中,如案例二;也可以将文件进行嵌套包含。 * * 例7.2 文件嵌套包含的使用。 将?#define F(p, v) (p*g*v)宏定义保存在user1.h中,#define g 9.8宏定义保存在user2.h中。 user1.h文件内容: #include user2.h #define F(p, v) (p*g*v) user2.h文件内容: #define g 9.8 /*注意:这里没有文件包含预处理*/ 使用文件嵌套预处理之后,案例二中的文件预处理程序段如下所示: #include stdio.h #include user1.h /*使用文件包含,将宏定义的g和F进行预处理*/ main() { float p, v, F2; printf(请输入在某液体中液体的密度p和物体的体积v\n); scanf(%f, %f, p, v); F2=F(p, v); printf( the F2 is %f\n, F2); } * * 程序运行结果如下: 请输入在某液体中液体的密度p和物体的体积v 700, 24 the F2=164640 这与案例二中计算在某液体中物体受到的浮力结果相同。 * * 案例三 #ifdef命令和#ifndef命令的使用 1. 问题描述 编写程序,使程序编译后的程序既能够在16位机上运行的目标代码,也能在32位机上运行的目标代码。 2. 问题分析 16位机与32位机在数据类型上主要是整数存储长度不一样,采用条件编译解决数据位数的问题。 * * 3. ?C语言代码 #include stdio.h main() { #ifdef PC16 /* 若PC16被定义为宏,则完成以下预处理 */ #define INTSIZE16 /* ?16位整型被定义为宏INTSIZE*/ #else /* 若PC16未被定义为宏,则完成以下预处理 */ #define INTSIZE32 /* 32位整型数被定义为宏INTSIZE*/ #endif /* #ifdef结束 */ } * * 7.3 条 件 编 译 为了测试程序运行情况,可以通过在程序中添加一些输出语句,根据输出的结果判定程序运行结果是否正确,对错误的程序进行修改直到满足需要。调试结束后将这些输出语句再进行删除。 C语言提供了条件编译预处理,能更好的解决测试问题。 对程序中的所有源代码有时只需要对其中部分代码进行编译,也就是对部分代码有选择地进行编译,该过程称为条件编译。条件编译主要有#ifdef命令 、#ifndef 命令还有#if命令。 条件编译主要有以下几种形式,#ifdef和#ifnde,以及#if,分别如表7-1~7-3所示 * * 表7-1 #ifdef条件编译形式 条件编译形式 说 明 #ifdef宏名 语句 #endif 如果宏名被定义过,则执行语句 #ifdef宏名 语句1 #else 语句2 #endif宏名 如果宏名被定义过,则执行语句1,否则执行语句2 * * 表7-2 #ifndef条件编译形式 条件编译形式 说 明 #ifndef 宏名 语句 #endif 如果宏名未被定义过,则执行语句 #ifndef 宏名 语句1 #else 语句2 #endif 如果宏名未被定义过,则执行语句1,否则执行语句2 * * 表7-3 #if条件编译形式 条件编译形式 说 明 #if 表达式1 程序段1 #endif 如果表达式1为真,则执行
文档评论(0)