2.1 C 语言的普及
C 编程语言之所以受欢迎是因为:
- C 编译器可用于许多处理器;
- C 程序可以编译为高效的机器代码;
- 它由国际标准定义;
- 它提供了直接或通过语言扩展来访问目标处理器的输入/输出功能的机制;
- 在关键系统中使用 C 有相当丰富的经验;
- 静态分析和测试工具广泛支持它。
2.2 C 语言的缺陷
尽管非常流行,但 C 语言具有一些缺点,以下各节将对此进行讨论。
2.2.1 语言的定义
ISO C 语言标准并未完全指定语言,而是将某些方面置于实现的控制之下。这是有意为之,部分原因是希望兼容广泛不同的目标处理器的许多现有实现。
因此,在 C 语言的某些部分:
- 行为是未定义的;
- 行为是未指定的;
- 一个实现可以自由选择自己的行为,前提是它被记录在案。依赖未定义或未指定行为的程序不一定能保证以可预测的方式运行。
过度依赖于实现定义的行为的程序可能很难移植到其他目标。如果无法配置分析器进行处理,则实现定义的行为的存在也可能会妨碍静态分析。
2.2.2 语言的滥用