• 您的位置我爱Aspx >> VC.Net >> MISRA--作为工业标准的C编程规范
  • MISRA--作为工业标准的C编程规范

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:49:06  关键字:
  • 对于“使用”这个变量的.c文件来说,这很好,因为g_count始终保持外部链接性质。可是对于定义g_count(实际分配空间)的.c文件来说,如果包含了上述的头文件,则在这个编译单元里就发生了内部链接和外部链接的冲突。解决办法是,定义g_count的文件尽量不要包含声名g_count的头文件。个人感觉这不是任何时候都做得到的,尤其是在对付遗留代码的时候。

    Rule 25. 具有外部链接性质的标识符应该只声明一次。

    Rule 27. 外部对象不得在多个文件中声名。

    Rule 28. 禁止使用register关键字。

    Rule 29. 自动对象(栈对象)使用前必须赋初值。

    Rule 33. 操作符&&和||的右侧表达式不得具有副作用(side-effect)。

    也就是说,象 if (x == 20 && ++y == 19)这样的表达式被禁止。

    Rule 35. 在返回布尔值的表达式中不得出现赋值操作。

    也就是说,我们常用的 if (!(fp = fopen("fname", "r"))) { /* error */ }

    被禁止。

    Rule 37. 不得对有符号数施加位操作,例如 1 << 4 将被禁止,必须写 1UL << 4;

    Rule 39. 不得对有符号表达式施加一元 "-" 操作符。

    Rule 40. 不得对有副作用的表达式施加sizeof操作符。

    Rule 42. 除了循环控制语句,不得使用逗号表达式。

    Rule 44. 禁止冗余的显式转型。比如: double pi = (double) 3.1416F;

    Rule 45. 禁止从任意类型到指针的强制转型,禁止从指针到任意类型的强制转型。

    例如:void* p = (void*)0xFFFF8888UL;

    Rule 49. 显示测试值是否为零。

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:《决策智能系统》开发计划摘要
    下一篇:一个软件测试工程师的加班经历
  • 相关文章