问答题

1.C语言的缺陷

C语言的语法限制不严格,对变量的类型约束不严,对数组下标越界不做检查。有时将一个浮点型数据赋值给一个整型变量,编译时只会警告而不会报错...有些程序会有很多漏洞却很难被发现。

2.C语言的编译过程

1.编译预处理。读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步,此输出文件将作为编译程序的输出而被翻译成为机器指令。
2.编译阶段。经过预编译得到的输出文件中,将只有常量。预编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。
3.优化阶段。优化一部分是对中间代码的优化。这种优化不依赖于具体的计算机。另一种优化则主要针对目标代码的生成而进行的。
4.汇编过程。汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。
5.链接程序。链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够让操作系统装入执行的统一整体。

你可能感兴趣的:(问答题)