/catalog/5b44b7aebbe041098fbfd868e044f805//Document/296736299995205.html/Document/267328648106053.html/Document/267018778099781.html/Document/266676511322181.html/Document/265619597201477.html/Document/235862026059845.html/Document/235543126302789.html/Document/235180874285125.html/Document/234831289405509.html/Document/234475373678661.html/Document/233059773943877.html/Document/232687006150725.html/Document/232354139811909.html/Document/230936619933765.html/Document/230597170643013.html/Document/230237883404357.html/Document/229522033393733.html/Document/228458058801221.html/Document/227760545189957.html/Document/227398664417349.html/Document/227055527931973.html

白盒测试——C/C++编程规范(9)
本系列文章将带大家一起解析一下GJB-8114标准规则,其中一共有124条强制性规则。GJB-8114强制性规则是按类分的,一共有13类,前面的文章已经讲过一部分,本文继续往下进行。

R-1-2-4引起二义性理解的逻辑表达式,必须使用括号显式说明优先级顺序

像违背示例中举的例子,如果a恒等于b,或者a恒等于c,而且a>0,这个或和与,到底谁的优先级更高呢?所以要求必须用括号来表达出谁的优先级更高,像遵循示例中展示的,就是先计算或,再计算与。

R-1-2-5逻辑判别表达式中的运算项必须要使用括号

像违背示例中展示的,一个变量a&0x80的结果是不是等于0x80,它的运算顺序一定是先计算与,然后再判断是否恒等,但是你在看程序的时候,可能会把&理解成一个逻辑运算符,就会引起歧义了,所以我们要把计算先括起来,先执行计算,把结果再进行逻辑判别。

R-1-2-6禁止嵌套注释

一般写程序的人都很容易犯这种错误,像违背示例中展示的那样,是我们最早的C语言中的注释方式,/*和*/中间还有/*,这种的就叫嵌套。但是/*和*/中间用//来表示,就不认为是嵌套了。

为什么要这样规定呢,因为在我们写程序的过程中,有一个不成文的规定,函数注释要用/*的方式,语句注释要用//的方式,如果我们要把某一个函数注释掉,我们就直接在它前面加一个/*,后面加一个*/就把它注释了,对于里面的注释没有影响。

为什么不允许违背示例中那样做呢,在注释一个比较长的文件的时候,我一看前面有一个注释的头/*,我把它删掉,把后面的*/删掉,我会以为这个注释我就可以放开了,可是实际上后面还有一个注释,就会把别的给注释掉了。