函数和链接性

C++ 不允许在一个函数中定义另外一个函数,因此所有的函数的存储持续性都自动为静态的,即在整个程序执行期间都一直存在。在默认情况下,函数的链接性为外部的,即可以在文件间共享。实际上可以在函数原型中使用关键字extern来指出函数是另外一个文件中定义的。还可以使用关键字static将函数的链接性设置为内部的,使之只能在一个文件中使用。必须同时在原型和函数定义中使用该关键字:

static int private(double x);
.....
static int private(double x)
{
    
    
.......
}

这意味着该函数只在这个文件中可见,还意味着可以在其他文件中使用同名的函数,和变量一样,在定义静态函数的文件中,静态函数将覆盖外部定义,因此即使在外部定义了同名的函数,该文件仍然将使用静态函数。
C++在哪里查找函数:
如果文件中函数原型指出该函数是静态的,则编译器将只在该文件中查找该函数定义,否则,编译器将在所有的文件中进行查找,如果找到两个定义,编译器将发出错误消息,因为每个外部函数只能有一个定义。如果在程序文件中没有找到,编译器将在库中查找。

おすすめ

転載: blog.csdn.net/weixin_42105843/article/details/118559459