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()所用的变量而焦急。多年来