繁体   English   中英

C ++静态局部函数vs全局函数

[英]C++ static local function vs global function

在文件中使用静态函数有什么用处?

它们与文件中的全局函数有何不同?

static int Square(int i)
{
   return i * i;
} 

VS

int Square(int i)
{
   return i * i;
}

在文件中使用静态函数有什么用处?

您可以使用这些函数为同一文件中的其他函数提供共享实现逻辑。 特定于文件的各种辅助函数是被声明为文件静态的良好候选者。

它们与文件中的全局函数有何不同?

它们对链接器是不可见的,允许其他编译单元定义具有相同签名的函数。 使用命名空间可以在很大程度上缓解此问题,但文件static函数优先于命名空间,因为它们是从C编程语言继承的特性。

static函数只是意味着链接器无法导出函数(即使其对其他转换单元可见)。 它使功能“私有”到当前翻译单元。 它与在匿名命名空间中包装函数相同。

namespace {

    int Square(int i)
    {
       return i * i;
    } 

}

通常,使用匿名命名空间是实现此目的的首选C ++方法,而不是使用static关键字。

静态函数仅在定义它们的文件中可见。 您不能在该特定文件之外引用它们。

在这里阅读更多

总之,联系。 static函数具有内部链接,也就是说,它们在其翻译单元之外是不可见的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM