- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC预处理命令预处理器是一种处理源文件文本的文本处理器,它是翻译起始阶段的一个组成部分。 预处理器并不在语法上分析处理源文本,但出于定位宏调用的目的,它将源文本分开语言符号。虽然编译器一般在初次编译时启动预处理器,但预处理器也可以不经编译,单独地处理文本。Microsoft特殊处用/E或/EP编译器选项进行预处理之后,你可以得到一个源代码的列表。在多数情况下,启动预处理器和输出结果文本到输出设备,这两种选项都是控制台指令,这两种选项的区别在于/E包括了#line指令,/EP没有这些指令。Microsoft特殊处结束________________________________________特殊术语在本书中,名词“参量”指的是传送给一个函数的实体。有时候,它用“actual”或“formal”修饰,它们分别用于表示函数调用时的参量表达式和在函数定义时的参量说明。名词“变量”指的是一种简单的C类型数据对象,名词“对象”指的是C++对象和变量;它是一个含义广泛的名词。________________________________________翻译阶段C和C++程序由一个或多个源文件组成,它们都包含了程序的某些文本,一个不包含代码部分的源文件和它的包含文件(用#indude预处理器指令包含的文件),若被条件编译指令(比如#if)调用,则称其为一个“转换单元”。源文件可被翻译多次,翻译过去的文件事实上是很正常的。已经翻译了的翻译单元可保存在单独的对象文件或对象代码库里,这些单个的转换单元可被连接形成一个可执行文件或动态链接库(DLL)。转换单元可采用下列形式通信:* 调用具有外部连接的函数。* 调用具有外部连接的类成员函数。* 直接更改具有外部连接的对象。* 文件的直接更改。* 内部外理通信(仅限于基于Microsoft Windows的应用程序)。以下是编译器翻译文件的各个阶段:字符映射源文件中的字符被映射为内部源代码的形式。此阶段三字母序列被转换为单字符的内部表现形式。行拼接在此阶段,源文件中所有以反斜杠(\)结尾且其后紧跟一换行符的行,将与下一行连接,从而由物理行生成逻辑行。所有非空源文件结束于一个前面没有反斜杠的换行符。语言符号化此阶段源文件被分为预处理语言符号和空白字符。源文件中每个注释被用一个空白字符代替。换行符被保留。预处理此阶段执行预处理指令并将宏扩展至源文件,#i nclude语句调用对所有包括文本启动前面三个翻译步骤开头的翻译过程。字符集映射所有的源字符集成员和转义序列将转换为执行字符集中的等价形式,对于Microsoft C和C++来说,源字符集和执行字符集都是ASCII码。字符串合并所有相邻的字符串和宽字符文字都将被合并。例如:“String”“concatenation”合并为“Stringconcatenation”。翻译所有的语言符号将按语法和语义规则进行分析;这些语言符号被转换为目标代码。链接此阶段所有的外部引用被分解以生成一个可执行程序或一个动态链接库。编译器在翻译过程中遇到语法错误时,将发出一个警告或错误信息。链接器分解所有的外部引用,并把一个或多个分开处理的转换单元和标准库联接起来,以生成一个可执行程序或动态链接库(DLL)。________________________________________预处理器指令预处理器指令如#define和#ifdef,一般被用在不同的运行环境下,使源程序易于更改和编译。源文件中的指令指示预处理器执行特有的行为。例如,预处理器可替换文本中的语言符号,将其它的文件内容插入源文件中,或移走文本的一部分以抑制文件中某部分的编译。预处理器行在宏扩展之前被识别且执行。不过,如果宏扩展看起来象一个预处理器指令,该命令将不能被预处理器识别。除转义序列之外,预处理器语句采用与源文件语句相同的字符集。在预处理器语句中的字符集和可执行程序的字符集是一样的。预处理器也可识别负字符值。预处理器可识别如下指令:#define #error #import #undef#elif #if #i nclude #else #ifdef #line #endif #ifndef #pragma数字符号(#)是包含预处理器指令的行中的第一个非空白字符。空白字符可出现在数字符号和指令的第一个字母之间。某些指令包含参量和值。指令之后的任何文本(除作为指令一部分的参量或值之外)必须放在单行注释分界符(//)之后或注释分界符(/* */)之间。预处理器指令可出现在源文件的任何地方,但它们仅用于源文件的剩余部分。#define指令可以用#define指令给程序中的常量取一个有意义的名称,其语法的
您可能关注的文档
最近下载
- 钢结构加工制作方案 (2).doc VIP
- 检验科病例讨论PPT课件.pptx VIP
- SIMATIC WINCC V7.5使用C脚本通过画面结合结构变量实现多个电机的控制功能.docx VIP
- PS液压盘式刹车零件图册.pdf VIP
- bim实施管理标准(深圳).pdf VIP
- (高清版)DB41∕T 1993-2020 山水林田湖草生态保护修复工程监理规范.pdf VIP
- 中国当代文学完整课件.ppt VIP
- 眼睑痉挛残疾指数、Jankovic、西多伦多痉挛性斜颈评分量表、颅颈肌张力障碍问卷、嗓音障碍指数.docx VIP
- 经史子集国学文库:史部·地理·长乐六里志.pdf
- 淮南市社区工作者招聘笔试真题2024.docx VIP
文档评论(0)