我在全局命名空间中看到了一个声明如下的函数:
static int function_name(int a, double* p, int c, float * u)
{
//do something with these arguments
}
静态关键字在这里意味着什么?
编辑:现在当我知道什么是静态时,请解释一下什么优势使得函数的限制只在声明它的文件中可见?我的意思是为什么我应该限制我的功能可见性,它给我什么?
答案 0 :(得分:6)
返回值不是静态int。该函数是一个返回int的静态函数。
答案 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)
}