当全局命名空间中的函数声明为静态C ++时,它意味着什么?

时间:2011-03-14 15:22:15

标签: c++ function static return-value

  

可能重复:
  What is a “static” function?

我在全局命名空间中看到了一个声明如下的函数:

static int function_name(int a, double* p, int c, float * u)
{
     //do something with these arguments
}

静态关键字在这里意味着什么?

编辑:现在当我知道什么是静态时,请解释一下什么优势使得函数的限制只在声明它的文件中可见?我的意思是为什么我应该限制我的功能可见性,它给我什么?

4 个答案:

答案 0 :(得分:6)

返回值不是静态int。该函数是一个返回int的静态函数。

请参阅what is a static funciton

答案 1 :(得分:5)

如果您真的希望只在该编译单元内知道具有该名称的函数,那么您将在编译单元中使用带有作用域的静态函数。不在该范围内的类或函数不会意外调用该函数。 (我已将此作为评论,但我还没有特权)

答案 2 :(得分:3)

返回值不是静态的,而是函数。这意味着该函数在该编译单元(= file,about)中可见,但在其他地方不可见。

答案 3 :(得分:1)

如前所述,static指的是整个函数,而不是它的返回类型。我想补充一点,在此上下文中使用static关键字在C ++中是 已弃用 Anonymous namespaces是更好的方式。

namespace 
{
   int function_name(int a, double* p, int c, float * u)
}