这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

C语言编程规则解析-16.5

上一篇 / 下一篇  2008-02-21 11:25:40 / 个人分类:静态分析

本文章系列中提到的规则大部分取自于MISRA-C:2004GJB5369-2005

 

16.5 无参数的函数必须使用'void'参数类型声明。

Functions with no parameters shall be declared with parameter type void.;

解释:

参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void填充。

例如:

void SetValue(int width, int height);      // 良好的风格

void SetValue(int, int);                         // 不良的风格

float GetValue(void);             // 良好的风格

float GetValue();                   // 不良的风格

原因:

考虑到代码将来的移植性问题。在C中函数声明没有写参数,并不意味着函数没有参数,例如:

 

OLD-STYLE

DEFINITION

float foo(a)

 

long a;
{
}

DECLARATION

float foo()

 

而在C++中,函数声明时没有写参数,意味着该函数没有参数。

无论什么情况下,如果函数没有参数,则用void填充。

 

引申:

同样,如果函数没有返回值,那么也应声明为void类型,不要省略返回值的类型。

 

C语言中,凡不加类型说明的函数,一律自动按整型处理。这样做不会有什么好处,却容易被误解为void类型。C++语言有很严格的类型安全检查,不允许上述情况发生。由于C++程序可以调用C函数,为了避免混乱,规定任何C++/ C函数都必须有类型。

 

注:以上部分内容参考了林锐博士的《高质量C++/C编程指南》1.0版本,特此感谢!


TAG: 静态分析

 

评分:0

我来说两句

Open Toolbar