c语言相邻字符串字面量,C语言核心技术—第一章下

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

016f674096242233ef650a8939a37d8c.png

第一章:C语言基础

1.6编译器运行原理

​ 用文本编辑器写完源码,编译器对翻译单元进行处理,若没有发现错误,则会生成包含对应机器码的目标文件(扩展名为.o或.obj)

​ 目标文件也成为模块,一个链接库包含多个编译好可以快速获取的模块

​ 然后编译器调用链接器将所有目标文件和所用到的链接库函数结合起来,成为一个可执行文件

ee8921a88481fde80bbe555e4f3350cf.png

1.6.1编译的8个逻辑步骤

​ (1)从源码读取并转换字符,如有必要将字符转换成源代码字符集的字符

​ (2)无论何时,只要反斜线后紧跟换行符,预处理器都会将两者删除,因为行尾字符视为预处理器命令的终止,反斜线可让预处理命令(如宏定义)可以在下一行继续

​ (3)将源码文件分解为若干预处理器标记和空格符序列,每个注释被看作一个空格

​ (4)执行预处理命令,展开宏调用

​ //1~4不仅作用于源码文件,也作用于#include命令插入的文件。

​ (5)字符常量和字符串字面量中的字符和转义序列被转换成运行字符集中对应的字符

​ (6)相邻字符串字面量被连接为一个字符串

​ (7)编译器分析标记序列,生成对应机器码

​ (8)链接器解析对外部函数和对象的引用,并生成可执行文件

1.6.2标记

​ 标记可以是关键字、标识符、常量、字符串字面量、符号

​ 将源码解析成标记过程中,采用原则如下:

​ 为避免歧义,每个连续的非空格符必须附加到正在读取的标记后面,直到出现附加后使得有效标记变为无效为止

​ 例如:a+++b。第一个+无法当作标识符的一部分,也不能当作以a开头的关键字的一部分,所以+是一个新标记的开始。第二个+附加到第一个+后面形成一个有效标记++,第三个+附加上来+++不是有效标记,因此表达式被分解成a++ + b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值