/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++编程规范(5)
本系列文章将带大家一起解析一下GJB-8114标准规则,其中一共有124条强制性规则。GJB-8114强制性规则是按类分的,一共有13类,前面的文章已经讲过一部分,本文继续往下进行。

R-1-1-15函数中的参数必须使用类型声明

也就是说参数必须有一个类型,如果没有类型的话,实际上编译器是无法通过的。在咱们介绍的这么多规则当中,有一些实际上你想这么做都做不到,因为只要你这样做了,编译器就通不过,所以这些规则在以后的GJB-8114的修订过程中,就有可能就会把这些规则给废掉了,但是目前没有这种打算,这种规则依旧存在。

R-1-1-16外部声明的变量,类型必须与定义一致

这个也就是说你声明了一个外部的变量,它定义的类型在重新声明外部变量的时候,类型还必须是一致的。如果你的声明不一致,有些编译器检查得不太严格,也不会出问题,但是当你用的时候,就会发觉一些问题。比如说你用一个整型的,重新声明的时候声明为了长整型。
当然现在在PC机上,整型和长整型都是4个字节的,应该不会出什么问题,但是原来这种整型是2个字节,16位,长整型是4个字节,32位。当你用到重新声明中的长整型时,你对它进行赋值,赋的是32位,可你只占了16位的地址,就会把这个变量后面的地址中后面的16位也给赋值了,就会改写你的程序。有时候你还发现不了,这个是一个挺严重的错误。

R-1-1-17禁止在函数体内使用外部声明

这个是说我在一个函数体内声明外部的变量、函数,这个在大多数的编译器中都不会出问题,都能够通过,但是上原则上是不允许的,要像遵循示例中表示的那样,把这些外部声明专门放到函数体的外面。比遵循示例中更好的方式是,放到一个头文件中,在前面有一个#include头文件。

如果你总是按照违背示例中那样写的话,就会发现整个程序会很乱,不易于阅读,而且它对于一个函数的总行数也有很大的影响。