电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

在将一个C源程序转换为可执行程序的过程中VIP免费

在将一个C源程序转换为可执行程序的过程中_第1页
1/11
在将一个C源程序转换为可执行程序的过程中_第2页
2/11
在将一个C源程序转换为可执行程序的过程中_第3页
3/11
第1页共11页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共11页在将一个C源程序转换为可执行程序的过程中,编译预处理是最初的步骤.这一步骤是由预处理器(preprocessor)来完成的.在源流程序被编译器处理之前,预处理器首先对源程序中的"宏(macro)"进行处理.C初学者可能对预处理器没什么概念,这是情有可原的:一般的C编译器都将预处理,汇编,编译,连接过程集成到一起了.编译预处理往往在后台运行.在有的C编译器中,这些过程统统由一个单独的程序来完成,编译的不同阶段实现这些不同的功能.可以指定相应的命令选项来执行这些功能.有的C编译器使用分别的程序来完成这些步骤.可单独调用这些程序来完成.在gcc中,进行编译预处理的程序被称为CPP,它的可执行文件名为cpp.编译预处理命令的语法与C语言的语法是完全独立的.比如:你可以将一个宏扩展为与C语法格格不入的内容,但该内容与后面的语句结合在一个若能生成合法的C语句,也是可以正确编译的.(一)预处理命令简介--------------------------------------------------------------------------------预处理命令由#(hash字符)开头,它独占一行,#之前只能是空白符.以#开头的语句就是预处理命令,不以#开头的语句为C中的代码行.常用的预处理命令如下:#define定义一个预处理宏#undef取消宏的定义#include包含文件命令#include_next与#include相似,但它有着特殊的用途#if编译预处理中的条件命令,相当于C语法中的if语句#ifdef判断某个宏是否被定义,若已定义,执行随后的语句#ifndef与#ifdef相反,判断某个宏是否未被定义#elif若#if,#ifdef,#ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if#else与#if,#ifdef,#ifndef对应,若这些条件不满足,则执行#else之后的语句,相当于C语法中的else#endif#if,#ifdef,#ifndef这些条件命令的结束标志.defined与#if,#elif配合使用,判断某个宏是否被定义#line标志该语句所在的行号#将宏参数替代为以参数值为内容的字符第2页共11页第1页共11页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共11页窜常量##将两个相邻的标记(token)连接为一个单独的标记#pragma说明编译器信息#warning显示编译警告信息#error显示编译错误信息(二)预处理的文法--------------------------------------------------------------------------------预处理并不分析整个源代码文件,它只是将源代码分割成一些标记(token),识别语句中哪些是C语句,哪些是预处理语句.预处理器能够识别C标记,文件名,空白符,文件结尾标志.预处理语句格式:#commandname(...)token(s)1,command预处理命令的名称,它之前以#开头,#之后紧随预处理命令,标准C允许#两边可以有空白符,但比较老的编译器可能不允许这样.若某行中只包含#(以及空白符),那么在标准C中该行被理解为空白.整个预处理语句之后只能有空白符或者注释,不能有其它内容.2,name代表宏名称,它可带参数.参数可以是可变参数列表(C99).3,语句中可以利用"\"来换行.e.g.#defineONE1/*ONE==1*/等价于:#defineONE1#defineerr(flag,msg)if(flag)\printf(msg)等价于:#defineerr(flag,msg)if(flag)printf(msg)(三)预处理命令详述--------------------------------------------------------------------------------1,#define#define命令定义一个宏:#defineMACRO_NAME(args)tokens(opt)第3页共11页第2页共11页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共11页之后出现的MACRO_NAME将被替代为所定义的标记(tokens).宏可带参数,而后面的标记也是可选的.对象宏不带参数的宏被称为"对象宏(objectlikemacro)"#define经常用来定义常量,此时的宏名称一般为大写的字符串.这样利于修改这些常量.e.g.#defineMAX100inta[MAX];#ifndef__FILE_H__#define__FILE_H__#include"file.h"#endif#define__FILE_H__中的宏就不带任何参数,也不扩展为任何标记.这经常用于包含头文件.要调用该宏,只需在代码中指定宏名称,该宏将被替代为它被定义的内容.函数宏带参数的宏也被称为"函数宏".利用宏可以提高代码的运行效率:子程序的调用需要压栈出栈,这...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

在将一个C源程序转换为可执行程序的过程中

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部