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

Nar*_*rek 2 c++ static function return-value

可能重复:
什么是"静态"功能?

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

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

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

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

Him*_*ury 6

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

看看什么是静态功能

  • @DasBoot所说的是正确的,但我想解释一下."翻译单位"通常表示:相同的文件.因此,如果函数声明为static,则只能在相同的*.c文件中调用它,而不能从其他*.c文件中调用.重点是避免名称冲突,并使功能"私有". (2认同)

tit*_*424 5

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