面向对象程序设计寒假作业1(问答题)

这个作业属于哪个课程 2020面向对象程序设计张栋班
这个作业要求在哪里 面向对象程序设计寒假作业1
这个作业的目标 安装C++开发环境、评价C语言的不足之处、了解C/C++的编译过程
其他参考文献 C++的编译过程及原理C/C++编译过程

1、C语言的缺点

  • (1)年代久远,缺少稳定的社区来交流学习,我学习了Python之后为其丰富的框架和库所惊叹,而且有官方网站以及严苛的标准。
  • (2)代码量较大,我将其与Python作比较,Python有大量丰富的函数对字符串进行操作,然而用C语言则无法做到如此简便,往往需要大量代码去实现,而且极易出现bug。
  • (3)对格式要求不严谨(极其讨厌的一点),单单对于“{”的摆放位置就让一个和你习惯不同的人看你的代码十分抓狂,更不必说著名的国际乱码大赛
  • (4)更容易出现bug,比如浮点数被转化成整数并不会提示我,数组越界也不会给出提示,往往因为一个不起眼的小错误会花大量时间对整个代码段进行检查。
  • (5)接触计算机底层内存分配,在大佬手里可以玩出花来,但是大佬并不多,在大多数时候是用来折腾人的。
  • (6)面向过程编程??

- (7)这里添加一下,因为C和C++是上个世纪的产物,都知道,当时的计算机内存都十分的小,所以对于每一分内存的分配都精打细算,对于数组越界的检查会消耗内存,所以对于数组是否越界就全靠程序员的自我修养。

2、C语言/C++的编译过程

  • (1)预编译:出理源代码中所有开头带“#”的指令,比如展开#include中的相关指令插到相应位置,对#define的替换等等,删除注释,添加行号和文件名标识(方便后续编译和调试),最后生成后缀为“.i”的文件。
  • (2)编译:对后缀为“.i”文件中的源代码进行词法分析、语法分析、语义分析以及优化等操作,然后生成相应的汇编代码文件,后缀为“.s”。
  • (3)汇编:将汇编代码转变为计算机可以执行的机器指令,汇编的过程比较简单,只需要将指令逐条翻译为机器指令,生成后缀为“.o”的文件,该文件以及是二进制文件。
  • (4)链接:后缀为“.o”文件实际上是一个无法直接运行的中间目标文件,需要将许多文件链接起来(一个很复杂的过程),最终生成后缀为“.exe”的可执行文件,即完成编译。
原文地址:https://www.cnblogs.com/JoshuaYu/p/12230598.html