C Primer Plus 第12章 12.3 存储类和函数

函数也具备存储类。函数能够是外部的(默认状况下)或者静态的(C99增长了第三种可能性,即在第16章“C预处理器和C库"中将讨论的内联函数)。外部函数能够被其余文件中的函数调用,而静态函数只能够在定义它的文件中使用。例如,考虑一个包含以下函数声明的文件:程序员

double gammma();  /*默认为外部的*/
static double beta();
extern double delta();

函数gamma()和delta()可被程序的其余文件中的函数使用,而beta()则不能够。由于beta()被限定在一个文件内,故能够其余文件中使用具备相同名称的不一样函数。使用static存储类的缘由之一就是建立为一个特定模块所私有的函数,从而避免可能的名字冲突。函数

一般使用关键字extern来声明在其余文件中定义的函数。这一习惯作法主要 是为了使程序更清晰,由于除非函数声明使用了关键字static,不然认为这是extern的。设计

使用哪一种存储类指针

对于”使用哪一种存储类?“这个问题的回答多半是"自动的”。不然为何要选择自动类型做为默认类型?是的,咱们知道乍看起来外部存储颇有诱惑力。把变量都设成外部变量,就不用为使用参数和指针在函数之间传递数据而费心了。然而,这存在着一种不十分明显的缺陷。您将不得不为函数A()违背您的意图,偷偷修改了函数B()所用的变量而焦急。多年来,无数程序员的经验给出了不容置疑的证据,证实随意使用外部变量带来的这一不十分明显的危险远比它所带来的表面吸引力重要。code

保护性程序设计中一个很是重要的规则就是“须要知道”原则。尽量保持每一个函数的内部工做对该函数的私有性,只共享那些须要共享的变量。除了自动类型之外,其余类型也是有用的,而且可用。但请在使用一个类型前,问问本身是否必须那样作。程序设计

相关文章
相关标签/搜索