C++不允许在一个函数中定义另一个函数,因此所有函数的存储持续性都自动为静态的,即在整个程序执行期间都一直存在。在默认情况下,所有函数的存储持续性都自动为静态的,即可以在文件间共享。使用关键字static将函数的链接性设置为内部的,使之只能在一个文件中使用,但必须同时在原型和函数定义中使用static。
如果文件的函数原型指出该函数是静态的,则编译器将只在该文件中查找函数定义;否则,编译器将在所有的程序文件中找。如果找到两个定义,编译器将发送错误消息,因为每个外部函数只能有一个定义。如果在程序文件中没有找到,编译器将在库中搜索。