博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C 编译程序步骤
阅读量:4973 次
发布时间:2019-06-12

本文共 543 字,大约阅读时间需要 1 分钟。

编译程序有八个步骤。这些步骤包括:

1.  从源代码文件中读取字符,如果有必要的话,将字符转换成源代码字符集的字符。如果源代码中的行尾字符和换行字符不一样,就进行替换。类似地,任何三字符组符号会被替换成赌赢的单一字符。

2.  不管什么时候,只要反斜线符号后面紧跟着换行字符,预处理器就会将两者(反斜线和换行字符)都删除。因为预处理器的指令结束的地方就是行的结束字符,所以这个处理步骤会将反斜线放在一行的结尾处,以让预处理指令在下一行继续。

3.  此源代码文件被分解成预处理器的记号和空格符。每个注释都被视为一个空格。

4.  预处理指令被执行,宏被展开。

5. “字符常量”和“字符串字面值”内的字符和转义符,会被转换成“运行字符集”中对应的字符。

6.  相邻的字符串字面值被串接成一个字符串。

7.  实际的编译工作开始:编译器分析记号的序列,并产生对应的机器码。

8.  链接器解析对外部对象和函数的引用,并产生可执行文件。如果模块引用的外部对象或函数没有被定义在任何翻译单元中,链接器就会从外部的标准链接库或其他指定的链接库中复制它们。在一个程序中,一定不能多次定义外部对象和函数。

转载于:https://www.cnblogs.com/claremore/p/4721327.html

你可能感兴趣的文章
hdu 1045 Fire Net dfs深搜或者二分匹配
查看>>
sqlserver 时间转换
查看>>
多态、接口
查看>>
浅拷贝 深拷贝
查看>>
Linux系统部署samba服务记录
查看>>
bzoj 1068: [SCOI2007]压缩
查看>>
python检查是否是闰年
查看>>
15、vue项目封装axios并访问接口
查看>>
TopCoder SRM 570 题解
查看>>
oracle数据库中的异常处理
查看>>
阻止js冒泡
查看>>
oo第二次博客-三次电梯调度的总结与反思
查看>>
理解linux and inode
查看>>
P2495 [SDOI2011]消耗战
查看>>
Cisco cmd命令(三)动态路由协议
查看>>
此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决
查看>>
Objective-c官方文档 封装数据属性
查看>>
NGSQC toolkit
查看>>
高性能MySQL中的三星索引
查看>>
使用mobile.changePage()时出现的问题(转)
查看>>