同步阅读进度,多语言翻译,过滤屏幕蓝光,评论分享,更多完整功能,更好读书体验,试试 阅读 ‧ 电子书库
16.1 翻译程序的第一步
对程序作预处理前,编译器会对它进行几次翻译处理。编译器首先把源代码中出现的字符映射到源字符集。该过程处理多字节字符和使C外观更加国际化的三元字符(trigraph)扩展(参考资料7“扩展的字符支持”对这些字符扩展进行了综述)。
第二,编译器查找反斜线后紧跟换行符的实例并删除这些实例。也就是说,将类似下面的两个物理行:
转换成一个逻辑行(logical line):
注意,在这种场合下,“换行符”代表按下回车键在源代码文件中新起一行所产生的字符,而不是符号\n代表的字符。
因为预处理表达式的长度为一逻辑行,所以这个功能为预处理做了准备工作。而一个逻辑行可能会比一个物理行多。
接下来,编译器将文本划分成预处理的语言符号(token)序列和空白字符及注释序列(术语语言符号代表由空格分隔的组。本章后面部分将详细讨论语言符号)。应注意的一点是编译器用一个空格字符代替每一个注释。因此,像下面的语句:
将变成:
C实现可能还会选用单个空格代替每一个空白字符(不包括换行符)序列。最后,程序进入预处理阶段。预处理器寻找可能存在的预处理指令。这些指令由一行开始处的#符号标识。
请支持我们,让我们可以支付服务器费用。
使用微信支付打赏