我爱Aspx >> VC.Net >> MISRA--作为工业标准的C编程规范对于“使用”这个变量的.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. 显示测试值是否为零。
【我对这篇文章有话说?】
一个软件测试工程师的加班经历[05-21]
在vc++.net托管中使用线程的一个..[05-21]
PMT资源之Open Source多媒体软件[05-21]
初为项目经理(完整版)[05-21]
传递自动化字符串数组[05-21]
走出MFC子类化的迷宫[05-21]
C#和C++的速度大比拼(二)[05-21]
C#和C++的速度大比拼(第一部分)[05-21]
关于杠杆长度变化的问题(C问题)[05-21]
利用SharpZipLib实现实时zip压缩..[05-21]