- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.7 预处理命令
4.7 预处理命令 在将C++源代码转换为可执行代码的过程中,处理源代码的第一个工具是预处理程序,然后才将预独步一时结果传送给编译程序进行编译。预处理程序只关注预处理命令,而忽略大多数的程序语句,不作修改地将它们传送给编译程序。 预处理命令以“#”开头并占用一行。如果一行写不完一条命令,可以继续写在下一行,但前一行的末尾要以一个特殊的继续符号“\”结束. 预处理命令并不是C++语言真正的语句,因此在预独步一时命令行末不使用分号“;”作为结束标记。 文件包含 文件包含预处理命令#include导致了直接的文本替换:预处理程序按照命令参数所给出的文件名取出完整的文件,并以此文件的内容直接替换该条预处理命令。这样就可以将若干个源文件合并成一个源文件,然后将它作为一个整体进行编译。 #include命令有两种形式: (1)#include文件名 (2)#include“文件名” 其中文件名必须符合你所使用操作系统的规定。 形式(1)一般用于C++系统提供的库函数,这些库函 数声明的源文件通常会放在C++系统目录中的include 子目录下。 形式(2)一般用于程序员自己开发的模块,C++编译 程序会先在当前目录有哪些信誉好的足球投注网站指定的文件,到再到系统目录 下有哪些信誉好的足球投注网站。 例子 #includeiosream.h 我们的程序中都需要使用C++系统提供的iostream库完成数据的输入/输出操作,而这个库的原型说明都放在系统目录下的include\iostream.h文件中,所以每一个程序开头我们都加入一条编译命令。 #include”c:\work\mydef.h” 如果要使用其它头文件中描述的不属于标准库的的函数,这些函数通常由该项目的程序员编写,于是编写#include命令时,必须用双引号括起包含的文件名,并可以在文件名中指定该文件所在的目录。 宏定义 #define PI 3.14 将符号名为PI的常量指定为常量值3.14 宏定义预处理命令,也是用于实现文本替换的,它的第一个参数PI(即符号常量名)指出了被替换的文本,称为宏名,第二个参数3.14(即常量值)指出了用作替换的文本。当预处理程序在后续的源代码中遇到了第一个参数(宏名)相对应的标识符时,就会用第二个参数替换该符号,这个过程叫宏展开。 还可以用#define命令来定义带参数的宏,也就是插入到源代码中的一系列计算。其命令格式为: #define 宏名(形式参数表) 字符串 字符串描述了一组用宏名标记的操作,其中包含在括号中所指定的形式参数(注意:在声明时,宏定义中的形式参数不需要指明数据类型) 例子 #includeiostream.h #define max(a,b) ((ab)? a:b) main( ) { float x, y; cout“Please input x and y:”; cinxy; cout“The max is: “max(x,y); } 从逻辑上来说,宏与函数在代码中的使用方式相同,都是用一个单一的名字来代表一组操作。宏的运行速度比函数快。 条件编译 #ifdef 标识符 程序段1 #endif 若指定的标识符已经用#define宏定义了,则#ifdef与#endif之间的程序段1就会被包含和编译;否则,当程序作为一个C++程序编译时,由于没有必要,预处理程序就会将程序段1隐藏起来使之不为编译程序所见,即不参加编译。 请注意指定的标识符未必一定具有值,在#define命令中使用的标识符,对于为了达到#ifdef命令的目的所定义的符号来说已经足够了。 #ifdef 标识符 程序段1 #else 程序段2 #endif 另外一种指出#ifdef命令作用域的访求是使用#else子命令:若指定的标识符已被定义,则程序段1参加编译,否则程序段2参加编译。根据判断条件,程序段1和2中只有一个分支的代码被包含和编译。 #ifndef 标识符 程序段1 #else 程序段2 #endif #ifndef命令与#ifdef命令相反。只有在命令中所使用的标识符没有定义的情况下,编译的条件才成立。当指定的标识符没有宏定义声明过,则程序段1参加编译,通常在这段程序中首先宏定义该标识符;否则,则标识符已经定义过了,程序段2参加编译。 我们经常使用条件编译的预处理命令来实现程序的可移植性。 上一节 返回 * * * * *
文档评论(0)