打印

MISRA--作为工业标准的C编程规范 (以后不怕三目运算符了,还

[复制链接]
楼主: snakeemail
手机看帖
扫描二维码
随时随地手机跟帖
21
li_mu| | 2008-6-7 15:36 | 只看该作者 回帖奖励 |倒序浏览

Rule 101. 禁止指针运算(代之以数组下标运算)。

Rule 101. 禁止指针运算(代之以数组下标运算)。

当系统存储器规模比较大时
数组的运行速度大于链表(连续整块操作时),而且垃圾收集不用担心了

使用特权

评论回复
22
gooog| | 2008-6-8 10:32 | 只看该作者

可以参考,但是不要被束缚

要想写一些高效率的底层驱动话,不用指针和技巧,好像比较难。

使用特权

评论回复
23
古道热肠| | 2008-6-9 16:13 | 只看该作者

指针和数组?谁好

还是觉得用指针便捷.

使用特权

评论回复
24
兰天白云| | 2008-6-10 08:00 | 只看该作者

安全第一,顶

使用特权

评论回复
25
HWM| | 2008-6-10 08:00 | 只看该作者

to 23楼:往往问题就出在“便捷”上,呵呵

为了使程序更清晰易懂,且更少后遗症,牺牲点便捷还是值得的,特别是在深度嵌入式系统中。象类似汽车电子这样的系统事后维护是很困难的,而且出错的后果也是相当严重的。

使用特权

评论回复
26
fineamy| | 2008-6-10 08:52 | 只看该作者

还是用ADA吧

使用特权

评论回复
27
snakeemail|  楼主 | 2008-6-10 10:44 | 只看该作者

第一条裤子呀,终于不用裸奔了.

俺发这个帖子的初衷是:我记不住三目运算符,也记不住***p,可是我看的面试的题目又考这些,大家在论坛上也讨论这些,但是我平时的工作又用不到这些东西,所以我要找个东西,回答这个矛盾.
我记得原来有个帖子,void*(*p...),反正用这个实现了51复位,从0x0000开始运行,这个东西我在著名的<c语言陷阱>这本书中也看到过,确实很酷,可是我记不住.我很苦恼,不过我再也不会苦恼了.
c语言不是什么都要强记的,例如static的应用,定义我知道,可是一直不知用在哪里,知道我在别人的滤波程序中看到了这个东西,我才记住了用法.简单实用才是重点.
用不用这些标准,是分场合的,写doom游戏的引擎,肯定效率至上,有问题,发个补丁,写汽车上的ABS,安全第一吧,也许内存泄漏会成了汽油泄漏.实际上这个标准也有关键和非关键两个要求,也许我们还可以搞个21ic消费电子标准C语言标准,21ic仪表标准C语言标准.
对于编写程序本身,以及cpu性能的争论,我也渐渐失去兴趣,我的兴趣都放在自动控制上.我希望串口队列,键盘去抖都写好,我直接去写一些重点应用.串口队列,和键盘定时查询,PID代码,dft代码,我都是直接看别人的代码然后实现的,我的工作是知道原理,看别人的代码,然后copy进去实现.现在要看现代控制理论了,矩阵和线性代数呀.

使用特权

评论回复
28
王紫豪| | 2008-6-10 13:56 | 只看该作者

禁止这个,禁止那个

他怎么不根据这个开发个 C-- 语言呢?太拘泥于教条。

使用特权

评论回复
29
zealane| | 2008-6-10 14:22 | 只看该作者

疯了~~~~~~~~

有些太呆板了。。。。。。

使用特权

评论回复
30
宇宙飞船| | 2008-6-10 15:08 | 只看该作者

垃圾教条!

使用特权

评论回复
31
IceAge| | 2008-6-10 20:37 | 只看该作者

说这个坛子里很多人有眼无珠,还没有说错

这些规则,并非空穴来风,而是深思熟虑的结果,是血泪教训得出的宝贵经验。不是一个呆在一口小井里,以为一颗石子的涟漪就是巨浪的人所能理解的。

只有一个人一部车时,自然看不到交通规则的重要。1000个人1000辆车时,交通规则固然令个人不爽,但对于全局的顺畅,却起至关重要的作用。

这些规则对于习惯了单打独斗,从不也不准备让后辈接手的游击队员们,确实是垃圾教条

使用特权

评论回复
32
王紫豪| | 2008-6-10 22:01 | 只看该作者

不违背语法,代码风格遵守k&R

使用特权

评论回复
33
BitFu| | 2008-6-11 08:49 | 只看该作者

哈哈

不使用break,continue,goto
Microsoft要重写所有代码了!

使用特权

评论回复
34
Wxy8030| | 2008-6-11 08:59 | 只看该作者

嘿嘿.......

习惯了单打独斗,从不也不准备让后辈接手的游击队员们——??

有时候这也是不得已哈......

使用特权

评论回复
35
zealane| | 2008-6-11 12:02 | 只看该作者

我就怀疑

刚刚网上查了一下MISRA C规范。发现并不是楼主贴出来的。
关于break,真实的规范是这样的
规则14. 6 :循环体中最多只能出现一个break 语句用于结束循环。


这个才合理嘛。哪有楼主说除了switch不能用break的。

大家看看正式的规则吧。不能被误导

http://www.bol-system.com/NEWS/MISRA%20C%D1%D0%BE%BF%B1%A8%B8%E6.pdf

使用特权

评论回复
36
MicroMMU| | 2008-6-11 12:36 | 只看该作者

英文版的MISRA在IAR开发环境里有.

写代码时可提示

使用特权

评论回复
37
gyt| | 2008-6-11 14:55 | 只看该作者

谢谢发表

使用特权

评论回复
38
hotpower| | 2008-6-11 22:48 | 只看该作者

Rule 101. 禁止指针运算(代之以数组下标运算)--delphi之真谛~~

使用特权

评论回复
39
HWM| | 2008-6-12 08:22 | 只看该作者

有的是禁止条款,而有的则是建议条款,并非一视同仁。

另外按我理解,一般更适用于深度嵌入式系统且可靠性要求相当高的场合。

使用特权

评论回复
40
wesleysz| | 2008-6-12 10:57 | 只看该作者

很好,很实用,收藏了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则