找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2252|回复: 0
收起左侧

MISRA-C-2004-工业标准的C编程规范-PDF中文版下载

[复制链接]
ID:394566 发表于 2021-3-18 11:28 | 显示全部楼层 |阅读模式
1 背景 —— C 的使用和问题
1.1 汽车工业中C 的使用
MISRA-C:1998 [1] 发布于1998 年。本文档是它的修订版本,用来解决与第一版本有关系的问题。


在汽车工业领域的实时嵌入式应用中,C 编程语言的使用越来越体现出广泛性和重要性。这在相当程度上取决于该语言固有的灵活性、可支持的范围及其潜在的访问广泛硬件环境的可移植性。详细的理由包括:
  • 对于许多使用中的微处理器来说,如果存在其他除了汇编语言之外的可用语言,通常就是C。在许多情况下,其他语言根本就不可用于硬件。
  • C 对高速、底层、输入/输出操作等提供了很好的支持,而这些特性是许多汽车嵌入式系统的基本特性。
  • 由于应用的逐步增长的复杂性,高级语言的使用较汇编语言更为适合。
  • 相对于其他一些高级语言,C 能够产生较小的和较少RAM 密集性(RAM-intensive)的代码。
  • 增长的可移植性需求。市场竞争要求在工程项目生命周期的任何阶段,软件可以通过移植到新的和/或低成本的处理器,目的是为了降低硬件成本。
  • 增长的自动产生 C 代码的使用要求。C 代码需要从模型包中自动产生。
  • 增长的对开放系统和主机环境(hosted enviroments)的兴趣。


1.2 语言的不安全性和C 语言
没有哪种编程语言能够保证最终的可执行代码会准确地按照程序员预想的那样执行。任何语言都会产生大量的问题,下面为其做了广泛的分类,并描述了C 语言不安全性的例子。


1.2.1 程序员产生错误
程序员产生的错误,简单的可以是变量名字的书写错误,或者更为复杂的错误,如对算法的误解。编程语言可以承受这样的错误。首先,语言的风格和表达能帮助或提示程序员清晰考虑其算法。其次,对于书写错误,语言可以使从一个有效结构向另一个有效(不是预想的)结构的转换变得轻松或困难。第三,当错误发生时,语言可以检测到也可能检测不到。

首先,关于语言的风格和表达,使用 C 可以编写出良好布局的、结构化的和表达性强的代码。还可以使用它编写出不正当的和特别难以理解的代码。很明显,后者对于安全相关的系统是不可接受的。

其次,C 的语法特性足以使得书写错误也能产生完全有效的代码。例如,在“==”(逻辑比较)的地方写成“=”(赋值)是很常见的,而且最终结果也几乎总是有效的(但它是错误的);而if 语句的结尾出现的多余分号能完全改变代码逻辑。

第三,C 的基本观点是假设程序员知道他们在做什么,这意味着错误即使出现也不会被语言注意到而通过。在这方面C 体现出的软弱性正在于它的“书写检查”(type checking)。举例来说,C 不会拒绝程序员在使用整数代表true/false 值时却在该整数中存储了浮点值。大多数这样的失配可以简单地通过强制使其合适。如果C 的表现不得其所(a square peg and a round),它不会挑剔而会适合它们!


1.2.2 程序员不了解语言
程序员可能会误解语言构造的作用。对这样的误解,一些语言是更为开放的。
C 语言中有相当多的地方能使程序员轻易产生误解。例如运算符优先级的规则。这些规则是良好定义的,但也非常复杂,也很容易对某特定表达式中运算符的优先级做出错误的假设。

1616037964(1).jpg

1616038009(1).jpg



MISRA-C-2004-工业标准的C编程规范-中文版.pdf

455.63 KB, 下载次数: 40, 下载积分: 黑币 -5

MISRA-C-2004-工业标准的C编程规范

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表